電子書籍の厳選無料作品が豊富!

下記テーブルに対して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
--------------

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が見つからない時は、教えて!gooで質問しましょう!