快速提问,我敢肯定,答案是如此简单,我只是盲目。 我想从数据库中选择所有仅以“ test_1_1_”开头的名称。
我想我是这么做的;
SELECT * FROM my_table WHERE names LIKE "test_1_1_%";
这似乎不起作用。 结果一直显示为
test_1_1_1
test_1_1_2
test_1_11_1
test_1_11_2
test_1_12_1
test_1_12_2
如何使用MySQL仅选择以“ test_1_1_”开头的结果?
先谢谢您。
卫斯理
答案 0 :(得分:1)
下划线在LIKE
中有特殊含义,需要转义:
SELECT * FROM my_table WHERE names LIKE 'test\_1\_1\_%';
您还可以在此处使用REGEXP
,并避免转义问题:
SELECT * FROM my_table WHERE names REGEXP '^test_1_1_';
答案 1 :(得分:1)
当您在_
中使用LIKE
时,将意味着用任何字符替换该空格。
例如,搜索类似field LIKE 'a_'
之类的内容将导致任何field
带有2个以“ a”开头的字符。
如果您确实要搜索下划线字符,则需要使用\
来转义该值,并且查询将如下所示:LIKE 'test\_1\_1\_%';
答案 2 :(得分:0)
可以这样做:
SELECT * FROM my_table WHERE names LIKE "test\_1\_\1\_%";
答案 3 :(得分:0)
下划线是与LIKE一起使用时的单字符通配符。因此,要特别定位下划线,需要按以下步骤对其进行“转义”:
select
*
from mytable
where names like 'test\_1\_1\_%' escape '\'
要测试通配符的文字实例,请在其前面加上 转义字符。如果未指定ESCAPE字符,则\为 假定。 https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html