首页 > 解决方案 > 当字符串包含下划线时,LIKE 运算符和 % 通配符

问题描述

我在 SQL Server 中有一个存储代码的表。根据命名法,一些以'DB_'开头,而另一些以'DBL_' 开头。我需要一种方法来过滤以'DB_'开头的那些,因为当我尝试这样做时,它会返回所有结果。

CREATE TABLE CODES(Id integer PRIMARY KEY, Name Varchar(20));

INSERT INTO CODES VALUES(1,'DBL_85_RC001');
INSERT INTO CODES VALUES(2,'DBL_85_RC002');
INSERT INTO CODES VALUES(3,'DBL_85_RC003');
INSERT INTO CODES VALUES(4,'DB_20_SE_RC010');
INSERT INTO CODES VALUES(5,'DB_20_SE_RC011');

SELECT * FROM CODES where Name like 'DB_%';

返回的结果:

1|DBL_85_RC001
2|DBL_85_RC002
3|DBL_85_RC003
4|DB_20_SE_RC010
5|DB_20_SE_RC011

预期结果:

4|DB_20_SE_RC010
5|DB_20_SE_RC011

标签: sqlsql-server

解决方案


_是表达式中单个字符的通配符LIKE。因此两者'DB_''DBL'都是LIKE 'DB_'。如果您需要文字下划线,则需要将其放在方括号 ( []) 中:

SELECT *
FROM CODES
WHERE [Name] LIKE 'DB[_]%';

推荐阅读