人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLで質問です。
顧客テーブルに姓と名のフィールドがあります。
id sei mei
1 田中 直樹
2 田中 直次
3 田中 英博
「田中直」と入力するとあいまい検索で
1 田中 直樹
2 田中 直次
を抽出したいのですが、SQL文はどうなりますか?

●質問者: rizo
●カテゴリ:コンピュータ
✍キーワード:SEI SQL あいまい フィールド 入力
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● azrite
●3ポイント

like句を使ってはどうでしょう。

具体的には条件で

like "田中直"

を入れると検索できると思います。

http://q.hatena.ne.jp/1142583773#answer_form

◎質問者からの返答

SQL文を具体的にお教えいただければ・・・ありがたいのですが。


2 ● meshy
●3ポイント

呼び出し側のアプリで姓と名で区切ってから

select 顧客テーブル

from 書籍台帳

where 姓 like '田中%'AND 名 like '直'

ってのはだめなんでしょうか?

http://www.yc.musashi-tech.ac.jp/~yamada/doc/mysql/win/0611....

◎質問者からの返答

姓と名を分ける作業を行うのはちょっと大変ですね。


3 ● iwaim
●3ポイント

SELECT id FROM 顧客テーブル WHERE sei='田中' AND mei LIKE '直%';

「田中直」を「田中」と「直」に別けるのは事前に処理するしかないでしょうね。sei が必ず 2文字と決まっているなら SQL でなんとかなるでしょうけど、決まっているわけはないと思いますので。

http://www.atmarkit.co.jp/fnetwork/rensai/sql01/sql1.html

◎質問者からの返答

上記と同じく姓と名を分けるのは大変そうです


4 ● birdie-brain
●60ポイント ベストアンサー

DBによって若干違ってくると思いますが、例えばMySQLの場合だと、以下のようになるでしょうか。

SELECT * FROM 顧客テーブル

WHERE

CONCAT(sei,mei) LIKE CONCAT('田中直','%');

sei列とmei列を連結したものと、入力途中の文字列にワイルドカード'%'を連結したものを、LIKE演算子で比較しています。

◎質問者からの返答

すばらしい!できました。

CONCATですね!


5 ● いのくに
●40ポイント

SELECT * FROM id, sei, mei WHERE CONCAT(sei, mei) LIKE '田中直%';

http://dev.mysql.com/doc/refman/4.1/ja/string-functions.html

◎質問者からの返答

こちらもCONCAT、知っている人は知っているんですね。知識が増えました。ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ