Я пытаюсь отловить ошибку имени переменной 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 [[55555
Обратите внимание, что исходное значение @thing было предварено скобкой "[". Я ожидал, что условие IF вернет false, так как «[55555» 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