值中的特殊字符不适用于like运算符,而相同字符可用于SQL Server中的=运算符

时间:2019-11-25 09:23:00

标签: sql-server-2016

有人可以帮助我找到具有价值的问题

City!@#$%^&*()_+-={}|:"<>?;''./[]\/*-+.

存储在一列中,该列激发选择查询在=运算符下正常运行,但在与LIKE运算符一起使用时无效。

例如:

create table test_kee (some_column nvarchar(50));

insert into test_kee 
values ('City!@#$%^&*()_+-={}|:"<>?;''./[]\/*-+.');

此查询工作正常:

 select * 
 from test_kee 
 where some_column = 'City!@#$%^&*()_+-={}|:"<>?;''./[]\/*-+.';

但是此查询不起作用:

 select * 
 from test_kee 
 where some_column like '%City!@#$%^&*()_+-={}|:"<>?;''./[]\/*-+.%';

1 个答案:

答案 0 :(得分:3)

字符[]%_对于like运算符具有特殊含义。
如果使用like运算符,则需要对它们进行不同的处理。
具体来说,您需要使用一个在escape子句中指定的字符对它们进行转义:

select * 
from test_kee 
where some_column like '%City!@#$~%^&*()~_+-={}|:"<>?;''./~[~]\/*-+.%' escape '~';

更多详细信息,请访问official documentation