[sql] 변수가있는 t SQL에 StartsWith 또는 Contains가 있습니까?

서버가 Express Edition을 실행 중인지 감지하려고합니다.

다음 t SQL이 있습니다.

DECLARE @edition varchar(50);
set @edition = cast((select SERVERPROPERTY ('edition')) as varchar)

print @edition

제 경우에는 @edition = Express Edition (64-bit)

다음을 수행하려면 어떻게해야합니까? (C # 영감).

DECLARE @isExpress bit;
set @isExpress = @edition.StartsWith('Express Edition');



답변

StartsWith

a) left(@edition, 15) = 'Express Edition'
b) charindex('Express Edition', @edition) = 1

포함

charindex('Express Edition', @edition) >= 1

left 함수

set @isExpress = case when left(@edition, 15) = 'Express Edition' then 1 else 0 end

iif 함수 (SQL Server 2012부터)

set @isExpress = iif(left(@edition, 15) = 'Express Edition', 1, 0);

charindex 함수

set @isExpress = iif(charindex('Express Edition', @edition) = 1, 1, 0);


답변

원하는 것이 http://msdn.microsoft.com/en-us/library/ms186323.aspx 인 것 같습니다 .

귀하의 예에서는 다음과 같습니다 (시작).

set @isExpress = (CharIndex('Express Edition', @edition) = 1)

또는 포함

set @isExpress = (CharIndex('Express Edition', @edition) >= 1)


답변

나는 사용할 것이다

like 'Express Edition%'

예:

DECLARE @edition varchar(50);
set @edition = cast((select SERVERPROPERTY ('edition')) as varchar)

DECLARE @isExpress bit
if @edition like 'Express Edition%'
    set @isExpress = 1;
else
    set @isExpress = 0;

print @isExpress


답변