我的脚本很简单。
SELECT file_name FROM images WHERE `id` = '$id' AND `file_name` LIKE '%_1.jpg'
当我在mysql中运行它时,它返回(id)_1.jpg和(id)_11.jpg 我怎样才能让它只找到(id)_1.jpg?
答案 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
的强大功能)。