AIと戦って、あなたの人生のリスク診断 >>

下記テーブルに対してphp(文字コードはShift_JIS)からselect * from tb_test where name like '%大会%';としたところ、id 1~4がヒットしてしまいます。
id 3はヒットしてほしくないのですが・・・なぜでしょうか?(AccessからMyODBCを経由して同じことをしても同じ結果になってしまいます)

id name
1 テニス大会
2 ゴルフ大会(雨天中止)
3 歴代会長
4 大会挨拶
5 ヘルシンキ大の会

MySQL の設定はこんな感じ↓です。

mysql> status;
--------------
mysql Ver 14.7 Distrib 4.1.14, for Win32 (ia32)
Connection id: 350
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 4.1.14-nt-log
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 1 day 14 hours 8 min 56 sec

Threads: 3 Questions: 13879 Slow queries: 0 Opens: 229 Flush tables: 1 Open
tables: 4 Queries per second avg: 0.101
--------------

このQ&Aに関連する最新のQ&A

A 回答 (3件)

もう解決しているかもしれませんが,


 http://www.mysql.gr.jp/mysqlml/mysql/msg/7140
を参考にしてみてください.

参考URL:http://www.mysql.gr.jp/mysqlml/mysql/msg/7140
    • good
    • 0
この回答へのお礼

ありがとうございました。
やはりバグだったのですね・・・。

お礼日時:2006/06/23 19:51

$query = "select * from tb_test where name like '%" . mb_convert_encoding("大会","UTF-8","SJIS") . "%'";



このように mb_convert_encoding 関数で「大会」の文字コードをMySQLに合わせてUTF-8に変換してみてはいかがでしょうか。

参考URL:http://jp2.php.net/manual/ja/function.mb-convert …
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速試してみましたが、1件もヒットしませんでした・・・。
select * from tb_test where name like '%大会%';で正しくヒットするレコードもある(しかし余計なレコードもヒットしてしまう)ので、完全に文字コードが違うわけではないようなのですが・・・。

お礼日時:2005/12/19 15:56

select * from tb_test where name like '%[大会]%';


と'大会'を[]で括っていませんか?
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
確認してみたところ、カッコでは括っていませんでした(select * from tb_test where name like '%大会%';)
ちなみに、カッコで括ってみた場合、1件もヒットしませんでした。
やはりsjis→utf8の自動変換あたりの問題なのでしょうか???

お礼日時:2005/12/19 15:26

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qlike句を使って日本語を検索する場合

初心者です。よろしくお願いします。

like '%日本語%'

のように検索をすると、拾える言葉と拾えない言葉があります。

たとえば、カタカナの「レ」など漢字の場合は「表」や「詐」などの言葉を検索しても拾えません。

対処法などありましたら是非、教えてください。
よろしくお願いします。

Aベストアンサー

同じ問題に直面して困っていたのですが,
私の環境では
 LIKE BINARY '%日本語%'
のようにすると上手くいきました.

下記URLも参考になると思います.

参考URL:http://www.mysql.gr.jp/mysqlml/mysql/msg/7140

Q検索時にヒットしない

SQL Server+Accessで使用しています。
ユーザから入力したはずのデータが検索時にヒットしないという質問があり、SQL Serverのデータベースの中を確認するとデータは存在していました。

確認のためにビューを利用して検索したのですが、データが存在するのにヒットしません。仕方ないのでワイルドカードを使用して検索するとヒットします(下例参照)。

キーとなるデータ:ABCDEFGH
検索キー:ABCDEFGH
ワイルドカード使用:LIKE 'ABCDEFG%'

検索時のキーとなるデータは8桁なのでワイルドカードを使用して1桁~8桁まで試しましたがヒットします。が、普通に検索するとヒットしません。

キーとなるデータ形式がおかしいのかと手入力してみましたが、結果は同じでした。ヒットしない原因は何なのでしょうか?

Aベストアンサー

No4です。失礼しました。こちらの文法ミスです。

SELECT ID, Len(ID) AS C0,
CASE when substring(ID, 1, 1)='A' THEN 1 Else 0 End AS C1,
CASE when substring(ID, 2, 1)='B' THEN 1 Else 0 End AS C2,
CASE when substring(ID, 3, 1)='C' THEN 1 Else 0 End AS C3,
CASE when substring(ID, 4, 1)='D' THEN 1 Else 0 End AS C4,
CASE when substring(ID, 5, 1)='E' THEN 1 Else 0 End AS C5,
CASE when substring(ID, 6, 1)='F' THEN 1 Else 0 End AS C6,
CASE when substring(ID, 7, 1)='G' THEN 1 Else 0 End AS C7,
CASE when substring(ID, 8, 1)='H' THEN 1 Else 0 End AS C8,
CASE when ID='ABCDEFGH' THEN 1 Else 0 End AS C9
FROM 台帳
WHERE (ID LIKE '%BCDEFGH')

No4です。失礼しました。こちらの文法ミスです。

SELECT ID, Len(ID) AS C0,
CASE when substring(ID, 1, 1)='A' THEN 1 Else 0 End AS C1,
CASE when substring(ID, 2, 1)='B' THEN 1 Else 0 End AS C2,
CASE when substring(ID, 3, 1)='C' THEN 1 Else 0 End AS C3,
CASE when substring(ID, 4, 1)='D' THEN 1 Else 0 End AS C4,
CASE when substring(ID, 5, 1)='E' THEN 1 Else 0 End AS C5,
CASE when substring(ID, 6, 1)='F' THEN 1 Else 0 End AS C6,
CASE when substring(ID, 7, 1)='G' THEN 1 ...続きを読む


人気Q&Aランキング