Я пытаюсь определить, работает ли на сервере 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');
sql
sql-server-2008
tsql
Валамас
источник
источник
colName LIKE 'prefix%'
будет очень быстрым приcolName
индексировании, ноcolName LIKE '%substring%'
илиcolName LIKE '%suffix'
будет медленным, потому что SQL Server не создает суффикс-деревья при индексировании текста. Аналогичным образом использованиеLEFT
со столбцом также будет медленным, потому что эти запросы не поддерживают поиск по запросу. SARGability важен: dba.stackexchange.com/questions/162263/…Похоже, вам нужен http://msdn.microsoft.com/en-us/library/ms186323.aspx .
В вашем примере это будет (начинается с):
set @isExpress = (CharIndex('Express Edition', @edition) = 1)
Или содержит
set @isExpress = (CharIndex('Express Edition', @edition) >= 1)
источник
Express Edition%
? Кроме того, разве ваше решение не возвращает истину, если "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
источник