sql server的奇怪行为

Pra*_*dda 0 sql sql-server

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

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

ID1              Name2
Run Code Online (Sandbox Code Playgroud)

当我执行以下查询时

SELECT * FROM tblNames
WHERE ID LIKE '_1'
Run Code Online (Sandbox Code Playgroud)

我选择了两个记录......

任何建议如何摆脱它?

Blo*_*ard 5

下划线(_)是LIKE表达式中与单个字符匹配的特殊字符.

要匹配实际的下划线,您需要将其转义:

select * from tblNames where id like '%\_1' escape '\'
Run Code Online (Sandbox Code Playgroud)

在这里,我告诉SQL Server将反斜杠视为转义字符,并使用它来转义下划线.

或者,您可以将下划线表示为包含单个字符的字符范围 - 在这种情况下,它将按字面解释:

select * from tblNames where id like '%[_]1'
Run Code Online (Sandbox Code Playgroud)

哪个更简洁一点.

参考:MSDN.