Sql server sql server的奇怪行为

Sql server sql server的奇怪行为,sql-server,sql,Sql Server,Sql,我的数据库中有以下表格结构 ID Name -------------------------- ID_1 Name1 ID1 Name2 当我执行以下查询时 SELECT * FROM tblNames WHERE ID LIKE '_1' 我选择了两张唱片 有什么建议如何摆脱它 SELECT * FROM tblNames WHERE ID LIKE '[_]1' 从TBL名称中选择* 我想在哪里找到“[[u

我的数据库中有以下表格结构

ID               Name
--------------------------
ID_1             Name1

ID1              Name2
当我执行以下查询时

SELECT * FROM tblNames
WHERE ID LIKE '_1'
我选择了两张唱片

有什么建议如何摆脱它

SELECT * FROM tblNames WHERE ID LIKE '[_]1' 从TBL名称中选择* 我想在哪里找到“[[u]1”

快速:是一个通配符,可以匹配任何内容

SELECT * FROM tblNames
WHERE ID LIKE '\_1' ESCAPE '\'
下划线(
\u
)是LIKE表达式中与单个字符匹配的特殊字符

要匹配实际下划线,需要对其进行转义:

select * from tblNames where id like '%\_1' escape '\'

这里,我告诉SQLServer考虑反斜杠转义字符,并使用它来转义下划线。

或者,您可以将下划线表示为包含单个字符的字符范围-在本例中,它将被逐字解释为:

select * from tblNames where id like '%[_]1'
更简洁一点


参考:。

下划线字符是类
运算符的通配符,它匹配任何一个字符。在您的案例中,模式“_1”与数据中的“_1”和“D1”都匹配

要在模式中使用文字下划线字符,需要在其周围加上括号,使其成为仅包含一个字符的字符范围:

SELECT * FROM tblNames
WHERE ID LIKE '[_]1'