質問: MYSQL+PHPで困っています。 データにはIDと住所を3列に分けて、 idにid aaaに県名 bbbに市区名 cccに町村名 を入れています。 仮に東京都渋谷区恵比寿がデータに入っています。 それで、 SELECT * FROM addr WHERE `aaa` LIKE ’%Z%’ || `bbb` LIKE ’%Z%’ || `ccc` LIKE ’%Z%’ ORDER BY id ASC としてみたのですが、これだと「東京都」や「渋谷区」などではうまく動いているのですが、 「東京都渋谷区」で行うと、それぞれの列には「東京都渋谷区」では登録されてないので、駄目っぽいです。 どのような解決法がありますでしょうか? グループ化かなと思いましたが、よく分かりませんでした。 素人なので、上記コードを変更してもらえればありがたいです。
回答: MySQL 4.1 リファレンスマニュアル :: 6.3.2 文字列関数 各要素に分解する前の住所に対して検索したければ、住所を連結してしまえばよいのです。 具体的には、CONCAT()関数を使って、このように記述します。 SELECT * FROM addr WHERE CONCAT(`aaa`, `bbb`, `ccc`) LIKE ’%Z%’ ORDER BY id ASC