考虑这个TSQL:
declare @b varchar(100)
set @b = 'BANK-41'
IF @b LIKE 'BANK_%'
BEGIN
print 'Wrong Matching'
END
为什么TSQL与字符串“BANK-
”和“BANK_
”匹配?
答案 0 :(得分:6)
在TSQL中,下划线是表示单个字符的通配符。
为了逃避,你需要用方括号包装它,如下所示:
'BANK [_]%'
答案 1 :(得分:3)
我认为SQL Server中的下划线是为外卡字符保留的。你需要逃避它。我想你可以把它放在括号中:
%[_]%
答案 2 :(得分:2)
你需要逃避“_”。它是Like语句的特殊字符。您可以将其括在[]。
中请参阅 LIKE (Transact-SQL) 。
答案 3 :(得分:1)
尝试LIKE ESCAPE
:
SELECT
x.Col1,
CASE WHEN x.Col1 LIKE 'BANK_%' THEN 1 ELSE 0 END AS Test#1,
CASE WHEN x.Col1 LIKE 'BANK\_%' ESCAPE '\' THEN 1 ELSE 0 END AS Test#2
FROM (
SELECT 'BANK-41' UNION ALL
SELECT 'BANK_41'
) x(Col1);
结果:
Col1 Test#1 Test#2
------- ----------- -----------
BANK-41 1 0
BANK_41 1 1