mysql:8172
From: "Kawaji, Shinya" <"Kawaji, Shinya" <kawaji@xxxxxxxxxx>>
Date: Fri, 29 Aug 2003 12:15:43 +0900
Subject: [mysql 08172] Re: 列間で LIKE はできますか?
かわじ、です。 > あいまい検索のLIKEキーワードですが、列間での一致はできますでしょうか。 > また出来る場合、ワイルドカードの%はどのように明示すればよいでしょうか。 > > つまり、 > WHERE a.address LIKE '東京都%' > のような感じで、 > WHERE a.address LIKE b.prefecture% .... ? > みたいなことが出来ないかという事なのですが…。 以下の方法もあります。 where LOCATE(b.prefecture, a.address) = 1 > やりたいのは、上記例でのフィールド名からわかる通り、住所と県名のテーブ > ルを用意して、住所を北の方の県から(北海道〜沖縄県の順)並び替えたいので > す。それをするのに、上記のような列間あいまい検索が出来れば、 > SELECT * FROM a,b WHERE a.address LIKE b.prefecture% ORDER BY b.id > とかでできるかなと思ったので…。 > > 他によい方法があれば、そちらでもよいので教えていただけるとありがたく存 > じます。 > 既に大量のデータがあり既存の構造を変更し難く、また県名が必要なのがたく > さんの用途中のほんの1アプリケーションだけなので、aに県名フィールドを > 持たせるとかは最終手段で考えています。 要件には反しますが、テーブル定義から考慮が可能であれば、以下のような 方法もあります。 1) 住所は、県名とそれ以下の住所の欄に分けておく 2) 県名は ENUM型にする(そのままで定義順に ORDER BY 出来ます) もしくは、 1) まず、市町村別のテーブルを用意しておく(県名、市町村名、市町村別ID) 2) マスターテーブルの方には市町村IDと、それ以下の住所のみ保持しておく という感じですと、市町村の合併時などにもある程度簡単に対応できるかと 思いますし、データ量も押さえられます。
8166 2003-08-29 05:50 [OHTSUKA Ko-hei <tech] 列間で LIKE はできますか? 8171 2003-08-29 12:02 ┣[班石悦夫 <madara@xxx] -> 8172 2003-08-29 12:15 ┣["Kawaji, Shinya" <ka] 8178 2003-08-30 23:13 ┗[Tomoyuki Ishino <ish]