• 締切済み

MySQLで住所テーブルのLIKE検索で

「CONCAT」使ったLIKE検索はできるようになったのですが、まだできない事があり質問。 東京都新宿区大久保2-26 という住所があり、下記のようにカラム展開されているとします。 東京都 | 新宿区 | 大久保 | 2 | 26 | これを「新宿区大久保2-26」で検索する場合です。 東京都 | 新宿区 | 大久保 | 2 | -26 | としておけばCONCATでまとめて検索できますが、先にハイフンを入れておく事に不自然さを感じます。ハイフンなしだと東京都新宿区大久保226でもヒットしてしまうし。 なにか対処方はあるのでしょうか?

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

そもそもLIKEでマッチさせようというなら最初から わけずにつなげておけばいいのでは? 完全一致をねらうならカラムをわけても悪いとはいわないですが よほどローカルな区分けでなにかを管理しない限り 番地まで一致するような集計が必要になるとは思えませんが? (たとえば番地ごとにある電柱の数を集計するとかそのレベル・・・) 都道府県、市区町村、それ以下の3くくり位がちょうどいいかと

全文を見る
すると、全ての回答が全文表示されます。
  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

2丁目26番地という住所があるなら 226番地という住所は存在しないです。 もちろん、違う地区にはありますが。 東京都新宿区大久保2-26と、 東京都新宿区大久保226は共存しない。 東京都新宿区大久保2-26があって 東京都新宿区小久保226は共存しうる。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複数テーブルからLIKE検索を行いたいのですが、う

    複数テーブルからLIKE検索を行いたいのですが、うまくいかないので教えてください ■やりたいこと ・一つのキーワードで、MAINテーブル「hoge」カラムと、SUBテーブル「hoge」カラムを検索して、該当したレコードを表示したい ■テーブル構成 ・MAIN … 「id」「main1」「hoge」… ・SUB… 「sub_id」「main_id」「sub1」「hoge」… ・1つの「id」に対して、対応する「sub_id」が複数(「id」1は一つだけ。対応する「sub_id」1は複数あります) ■試したこと1 SELECT a.* , r.* FROM main a LEFT JOIN sub r ON a.id = r.main_id WHERE ( a.hoge LIKE '%キーワード%' OR r.hoge LIKE '%キーワード%' ) とやると、2件ヒットするはずなのに、1レコードしか取得できません(1レコードに「hoge」カラムが2つ入ります) ■試したこと2 SELECT a.* , r.hoge as rhoge FROM main a LEFT JOIN sub r ON a.id = r.main_id WHERE ( a.hoge LIKE '%キーワード%' OR r.hoge LIKE '%キーワード%' ) とやると、2件ヒットするはずなのに、1レコードしか取得できません(1レコードに「hoge」と「rhoge」カラムになります) ■試したこと3 FROMで2箇所指定するのかと思ったのですが、 SELECT a.* , r.* FROM (main a,sub r) LEFT JOIN r ON a.id = r.main_id WHERE ( a.hoge LIKE '%キーワード%' OR r.hoge LIKE '%キーワード%' ) 結果は、#1066 - Not unique table/alias: 'r'になります ■試したこと4 LEFT JOINがいらないのかと思い、削除したら、2件ヒットするはずなのに、たくさんヒットしてしまいます ■質問 欲しいのは、キーワード検索した際、該当カラムにヒットした数だけのレコードなのですが、どうすれば良いのでしょうか? ■例 ・東京で検索 ・MAINテーブル「hoge」カラム(2レコード)で2ヒット ・SUBテーブル「hoge」カラム(3レコード)で3ヒット ・ヒットした該当5レコードを取得したい

    • ベストアンサー
    • MySQL
  • 住所の検索について

    住所テーブルの住所項目に 東京都東京市東京1 とあって、 例えば、 東京都東京市東京1-1-1 で検索した時に、東京都東京市東京1をselectする方法はないものでしょうか。 select 住所 from 住所テーブル where 住所 like '%東京都東京市東京1-1-1%' だと検索できないようでして。何か方法はございませんでしょうか? どうかご教示お願い致します。

  • 複数カラム検索で、LIKE "%検索語%"

    複数カラム検索をしたいと思い、リンク先の通り、 WHERE concat(field1,char(0),field2) LIKE "%検索語%" としたらうまくいったのですが、 そのページに書いてあることが気になるので、教えてください ▽MySQLで複数フィールドから同一語を検索するには・・・ - MySQL - 教えて!goo   http://okwave.jp/qa/q2634613.html ・char(0)て何でしょうか? >%データ%は全件を検索するため効率うんぬんを論ずるような仕組みではない ・どういう意味でしょうか? ・全件検索する際は、LIKE検索を使わないのでしょうか? 全文検索エンジン(?)を利用するのでしょうか? ・全件検索しなければ(例えば2カラムだけ)、LIKE検索を利用しても良いのでしょうか? ・あるいは、データ規模が少なければ、LIKE検索を利用しても良いのでしょうか? >本番ではこんなことはしませんがあくまでも遊びということで ・どういう意味でしょうか? ・concatで LIKE 検索を普通はしない、ということでしょうか? ・それとも、LIKE 検索で、char(0)などのセパレータを挟まない、ということでしょうか? ・あるいは、全件検索でLIKE検索を普通は使わない、ということでしょうか?

    • ベストアンサー
    • MySQL
  • 住所録の条件検索について

    皆さんお世話になります。 エクセルで住所録を作っていますが、この住所録の中で特定の地域のレコードは何件あるかを調べたいのですが、関数のcountifを使った場合、住所蘭が都道府県名~番地までひとつのセルに入っているため、検索範囲のセルの内容と一致せず、ヒットしません。 たとえば、住所欄に「東京都千代田区大手町二丁目」と入っていたとして検索条件に「"千代田区"」としても、うまく検索してくれません。 どなたか良い方法をご指導ください。

  • ある住所からある住所までの距離を検索できるサイトなんて

    ある住所からある住所までの距離を検索できるサイトなんてないですよね? (例) 東京都神田1-8-6→東京都港区5-6-3 それぞれの住所を入れると「直線」または「最短道路」の距離を教えてくれるような・・・。 #無理かな。

  • 文字検索 (LIKE)を使った場合

    テーブル「USERS」の項目「FAMILY_NAME」「FIRST_NAME」をつなげた文字列に対して検索を行ないたいのですが、以下の「LIKE」を使ったSQL分ではカラムがないとエラーになるようです。 方法があれば教えて下さい。 よろしくお願いします。 テーブル:USERS 項目: FAMILY_NAME FIRST_NAME 値: 三木 直人 中川 三郎 SELECT CONCAT(FAMILY_NAME,FIRST_NAME) AS USER_NAME FROM USERS WHERE USER_NAME LIKE '%三%'

    • ベストアンサー
    • MySQL
  • 緊急です!><教えてください!お願いいたします!

    *東京都新宿区大久保 "天精佛堂"についての住所と電話番号を教えてください!

  • 複数カラムに対するLIKE文の最適化

    column1~column3のデータに文字検索をしたいのですが、 下記のような不恰好なSQLしか思いつきません、、。 select * from tb where   ( column1 like '%word1%' or column2 like '%word1%' or column3 like '%word1%' ) and ( column1 like '%word2%' or column2 like '%word2%' or column3 like '%word2%' ) and ( column1 like '%word3%' or column2 like '%word3%' or column3 like '%word3%' ) 試しに、 select * from tb where   ( ( column1 or column2 or column3) like '%word1%' ) and ( ( column1 or column2 or column3) like '%word2%' ) and ( ( column1 or column2 or column3) like '%word3%' ) と考えたのですが、これですと検索結果0件になってしまいます。 もっとスマートなSQL文がありましたら、ご教授頂きたいです。

    • ベストアンサー
    • MySQL
  • 正しい住所の書き方

    いろいろな書類の住所を書く欄に、あらかじめ「都・道・府・県」の文字や「市・区・町・村」の文字が印刷されている場合があります。私は今までそのような書類のときは「東京」と書いて「都」に○印を付け、「新宿」と書いて「区」に○印を付けていました。ところがある書類の記入例の見本を見ると「東京都」と書いて「都」に○をしないで「新宿区」と書いて「区」に○をしてありませんでした。どちらが正しいのでしょうか。

  • ACCESS重複データの単一処理

    ACCESS重複データの単一処理 ACCESS重複データの処理 下記ようなデータ TEL         社名            住所                FAX 0312345678    田中産業株式会社   東京都新宿区大久保1234   0312349876 0612345678    佐藤商店         大阪市中央区南船場 001   0612346789 0312341234    田中産業株式会社   東京都新宿区大久保1234   0312349999 0612343456    佐藤商店         大阪市中央区南船場 001   0612346666 1行目と3行目、2行目と4行目は同じ会社です。各会社は1行ずつ抽出したいです。 例: 0312345678    田中産業株式会社   東京都新宿区大久保1234   0312349876 0612345678    佐藤商店         大阪市中央区南船場 001   0612346789 重複判断基準は、社名と住所。抽出したデータはすべて項目を含める。重複しないデータはどれでも結構です。よろしくお願いします。

このQ&Aのポイント
  • MCFJ6973に使うブラザー純正インクカートリッジの大容量タイプと普通タイプのインクの量の差を調べました。
  • 大容量タイプの品番は黒がLC119、シアン・マゼンタ・イエローがLC115で、普通のは前色LC113です。
  • 大容量タイプは普通タイプと比べて、インクの量がどの程度多いのか詳しく解説します。
回答を見る