如何在mysql中找到文件名如同%_1.jpg%而不查找_11.jpg

时间:2013-03-16 21:37:59

标签: mysql

我的脚本很简单。

SELECT file_name FROM images WHERE `id` = '$id' AND `file_name` LIKE '%_1.jpg'

当我在mysql中运行它时,它返回(id)_1.jpg和(id)_11.jpg 我怎样才能让它只找到(id)_1.jpg?

2 个答案:

答案 0 :(得分:8)

你必须逃避下划线:

SELECT file_name FROM images WHERE `id` = '$id' AND `file_name` LIKE '%\_1.jpg'

参考:http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like

答案 1 :(得分:1)

这是因为_匹配任何单个字符而不是文字下划线。

你可以逃避下划线\_,但我会认真考虑使用regexp而不是like,因为它更具表现力和灵活性。

有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html_like的使用情况和regexp的强大功能)。