0

画像に関する情報のデータベースがあります。ユーザーが指定した文字列を含むファイル名をユーザーが検索できるようにする必要があります。本来あるべきように機能していません。

たとえば、データベースには、名前が文字 'b' で始まるファイルの 27 レコードが含まれています。

(PHPMyAdminで)クエリを実行すると:

SELECT * FROM image WHERE img_name LIKE '%b%';

ファイル名に文字「b」が含まれているレコードのリストを取得します (予想どおり)。

しかし、'b' で始まるファイルの 27 レコードのうち 4 つだけがそのリストに表示されます。

私が見逃しているものはありますか?

4

2 に答える 2

0

表示されないのは「b」で始まるものだとおっしゃっています。

これはケースの問題である可能性があります。

そのように名前を小文字に変換します

SELECT * FROM image WHERE strtolower(img_name) LIKE '%b%';

于 2013-06-16T22:24:20.680 に答える
0

質問を投稿した後、別の可能性が頭に浮かび、それが解決策であることが判明しました。

データベース定義をさらに調べたところ (私が設計したわけではありません)、img_name に varbinary(255) が使用されています。クエリを次のように変更すると:

SELECT * FROM `image` WHERE CONVERT(img_name USING latin1) LIKE '%b%'

期待するすべてのレコードを取得します。

于 2013-06-16T20:35:21.097 に答える