在variables中是否存在StartsWith或Contains in t sql?

我正在尝试检测服务器是否正在运行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'); 

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

例子:

使用leftfunction:

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

或者从SQL Server 2012开始,可以使用iif函数:

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

或使用charindexfunction:

 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