我有一个简单的表,如下所示
id, target
-----------
1, test_1
2, test_2
3, test_3
4, testable
我有一个简单的查询:
select * from my_table where target like 'test_%'
我期待的是前3条记录,但我获得了所有4条记录
参见SQLFiddle example here
答案 0 :(得分:6)
下划线是一种模式匹配角色。试试这个:
select * from my_table where target like 'test[_]%'
答案 1 :(得分:6)
_也是一个通配符。你可以逃脱它:
... like 'test\_%' escape '\'
答案 2 :(得分:4)
您使用的下划线字符_是单个字符的通配符,因此它返回4行。尝试使用[_]而不是_。
说明..
CREATE TABLE #tmp (val varchar(10))
INSERT INTO #tmp (val)
VALUES ('test_1'), ('test_2'), ('test_3'), ('testing')
-- This returns all four
SELECT * FROM #tmp WHERE val LIKE 'test_%'
-- This returns the three test_ rows
SELECT * FROM #tmp WHERE val LIKE 'test[_]%'
答案 3 :(得分:3)
下划线是一个通配符,表示"匹配任何字符单个字符",就像%是一个通配符,表示"匹配任何0个或多个字符"。如果您熟悉正则表达式,则下划线字符相当于那里的点。你需要正确地逃避下划线以便按字面意思匹配该字符。