変数の値の前に角かっこ「[」が付いていることを確認して、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
2つの条件の出力は次のとおりです。
[は好きではありません[
STACKOはStackOのようなものです