人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MYSQLのLIKEでの検索で、大文字小文字を区別しないで検索したいのですが、できません。

mysql5を利用しています。対象カラムはvarchar(255)です。

hoges
------
id (int)
name (varchar255)
------

SELECT * FROM hoges WHERE name LIKE '%Taro';
SELECT * FROM hoges WHERE name LIKE '%taro';

とどちらで検索しても、nameに入った「taro」にHITさせたいです。


●質問者: cbic
●カテゴリ:ウェブ制作
✍キーワード:MySQL name SELECT カラム 大文字
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●44ポイント ベストアンサー

MySQL のデフォルトの動作は大文字・小文字を区別しないはずですが、下記のようにカラムに

BINARY 属性を付けた場合区別するようになります。

http://nayuzak.blog50.fc2.com/blog-entry-17.html


ご使用のテーブルはそのようになっていないでしょうか。

その場合下記のように CONVER 関数を使用し変換することで、区別しないで検索が可能となります。

SELECT 'A' LIKE CONVERT(blob_col USING latin1) FROM tbl_name;

詳細は下記をご参照ください。

http://ftp.ku.ac.th/pub/mirror/mysql/doc/refman/5.1/ja/cast-func...

◎質問者からの返答

ありがとうございます。バイナリかどうかって調べる方法ありますか?該当テーブルをdesc hogesってしても、varcharとしかでないんですよ。でもwhere lower(name) LIKE '%Taro';ってすると、小文字もHITします。


2 ● chuken_kenkou
●26ポイント

文字コードは、何を使っているのでしょうか?

name列は、varchar(255) binaryとしているのでしょうか?

binaryでないなら、MySQLでは大文字と小文字を区別しないので、特に工夫しなくてもそのまま期待した結果を得られるはずです。


MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.3.2.2 ケース依存性



もし、binaryであるなら、lower関数やupper関数で、大文字か小文字に統一させる方法があります。

set @ptn='%taro';
select * from hoges
 where name like lower(@ptn)
◎質問者からの返答

binaryではないんですが・・・。なぞですね。

ちなみに、バイナリかどうかって調べる方法ありますか?該当テーブルをdesc hogesってしても、varcharとしかでないんですよ。でもwhere lower(name) LIKE '%Taro';ってすると、小文字もHITします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ