プロが教える店舗&オフィスのセキュリティ対策術

別テーブルにあるデータを部分一致で選択するためにはどうしたらよいでしょう。

申し訳ありません基本的なSQLを教えてください。

テーブルAに住所、テーブルBに市区町村名と市区町村コードがあり、テーブルAに当該市区町村コードを付けたしたいのですが、どうやってテーブルAとBをマッチさせればよいのでしょうか
具体的に言えば

テーブルA内の住所カラムが以下のようなものを含んだデータだとします。

神奈川県横浜市中区XX-XX
東京都港区赤坂XXX




テーブルBには市区町村名カラムと市区町村コードカラムがあります。
中央区,0011
港区,0012


横浜市中区,0033
横浜市南区,0034


(一応注釈ですがCSVのイメージだと思ってください)

この2つのテーブルから合致したものに対し

神奈川県横浜市中区XX-XX,0033
東京都港区赤坂XXX,0012

という形で抽出したいのですがどのようにしたら良いのでしょうか
(東京の”中央区”など重複する可能性のあるものはデータ側で対応しますので重複しないと考えて結構です)

よろしくお願いいたします。

A 回答 (2件)

まずSQL的な高速な処理は無理です。

遅くてもよいならという前提で、
中区を汎用にするため%を両端につけます

CONCAT('%',市区町村名カラム、'%')

これをもとにINNER JOIN すればよいでしょう

SELECT 住所カラム,市区町村コードカラム
FROM テーブルA
INNER JOIN テーブルB
ON 住所カラム LIKE CONCAT('%',市区町村名カラム、'%')

ただ「重複しないと考えて」といいつつもかなり無理があるロジックです。
たとえば広島市で検索をかけると東広島市がヒットしたりします。
正規表現のつかえるSQLであれば、いろいろ調整できるかもしれませんね
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございました。

お礼日時:2010/08/08 14:43

こんにちは。



データベースの種類をお願いします・・・。

この回答への補足

こんにちは。

SQL Serverですが、簡単なポーティングはするつもりなのでRDBMSはどれを想定していただいても結構です。
よろしくお願いいたします。

補足日時:2010/08/06 06:04
    • good
    • 0

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