sql-server-2016 - 值中的特殊字符不能与 like 运算符一起使用,而在 SQL Server 中与 = 运算符一起使用

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

最佳答案

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

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

更多详细信息请参阅 official documentation

关于sql-server-2016 - 值中的特殊字符不能与 like 运算符一起使用,而在 SQL Server 中与 = 运算符一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59028556/

相关文章:

SQL 将重复记录合并到一行

sql - 使用分隔符连接或合并许多列值并忽略空值 - SQL Server 2016 或更早版本

sql-server-2016 - 如何比较 varchar 列与多个值

sql-server - 卸载 SQL Server 2016

SQL Server : retrieving stored procedure errors and use them

sql - 对 2 个相互依赖的表进行复杂的 SQL 更新

sql - MERGE 语句尝试多次更新或删除同一行 > 一次

c# - 似乎无法通过 ASP.Net Core 连接到 SQL Server(一直返回空值)

sql - 如何透视下一个 ROW_NUMBER()

sql-server - 报表服务器无法验证加密数据的完整性