0

私のスクリプトは単純です。

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

これを mysql で実行すると、(id)_1.jpg と (id)_11.jpg が返されます。(id)_1.jpg のみを検索するにはどうすればよいですか?

4

2 に答える 2

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

于 2013-03-16T21:39:53.413 に答える
1

これは、文字通りのアンダースコアではなく、任意の1文字に_一致するためです。

アンダースコアを回避することはできますが、表現力と柔軟性がはるかに高いため、使用\_することを真剣に考えます。regexplike

詳細については、 http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html_を参照してください( inの使用likeとのパワーの両方についてregexp)。

于 2013-03-16T21:44:10.653 に答える