我试图通过确保变量的值以括号“[”为前缀来错误地捕获 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" is LIKE '[' + '%'
为什么 IF 条件不返回 false?而且,更重要的是,我想,检查在变量字符串值开头出现的字符串是否存在的正确语法是什么?
编辑 它似乎是因为括号“[”有一些特别之处。当我在支架上运行 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