Я пытаюсь перехватить имя переменной T-SQL, убедившись, что перед значением переменной стоит скобка "[".
Вот пример того, как я пытаюсь это сделать:
DECLARE @thing nvarchar(20)
SET @thing = '[55555'
IF(@thing NOT LIKE '[' + '%') --If the value does not start with [ then add it
BEGIN
SET @thing = '[' + @thing
END
PRINT @thing
Пример выше PRINT's [[55555
Обратите внимание, что исходное значение @thing было дополнено скобкой "[". Я ожидал, что условие ЕСЛИ вернуло бы false, так как "[55555" is LIKE '[' + '%'
Почему условие IF не возвращает false? И, что более важно, я полагаю, каков правильный синтаксис для проверки существования строки, которая возникает в начале значения переменной строки?
EDIT
Похоже, что в скобках "[" есть что-то особенное. Когда я запускаю LIKE на брекете, он не выполняет то, что я ожидаю, но когда я не использую брекет, LIKE работает так, как я ожидаю.
Посмотрите эти примеры:
IF('[' NOT LIKE '[')
BEGIN
PRINT '[ is NOT LIKE ['
END
ELSE
BEGIN
PRINT '[ is LIKE ['
END
IF('StackO' NOT LIKE 'StackO')
BEGIN
PRINT 'STACKO is NOT LIKE StackO'
END
ELSE
BEGIN
PRINT 'STACKO is LIKE StackO'
END
Вот вывод двух условий:
[НЕ НРАВИТСЯ [
STACKO, как StackO