MySQL搜索哪里列如''

时间:2018-12-10 03:01:39

标签: mysql

快速提问,我敢肯定,答案是如此简单,我只是盲目。 我想从数据库中选择所有仅以“ 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_”开头的结果?

先谢谢您。

卫斯理

4 个答案:

答案 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