私のスクリプトは単純です。
SELECT file_name FROM images WHERE `id` = '$id' AND `file_name` LIKE '%_1.jpg'
これを mysql で実行すると、(id)_1.jpg と (id)_11.jpg が返されます。(id)_1.jpg のみを検索するにはどうすればよいですか?
私のスクリプトは単純です。
SELECT file_name FROM images WHERE `id` = '$id' AND `file_name` LIKE '%_1.jpg'
これを mysql で実行すると、(id)_1.jpg と (id)_11.jpg が返されます。(id)_1.jpg のみを検索するにはどうすればよいですか?
アンダースコアをエスケープする必要があります:
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文字に_
一致するためです。
アンダースコアを回避することはできますが、表現力と柔軟性がはるかに高いため、使用\_
することを真剣に考えます。regexp
like
詳細については、 http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html_
を参照してください( inの使用like
とのパワーの両方についてregexp
)。