[pgsql-jp: 29241] Re: 電話番号から住所を検索するSQL

藤本悟司 satoshi @ try-square.co.jp
2003年 2月 26日 (水) 16:59:21 JST


藤本です。

UNO Shintaro さんは書きました:
>
>「UNIONなんか使わなくても、ORで書けるんでは」ってツッコミが入りました。
>確かにそうですね。(^^; おっかしいなあ、なんで気付かないんだろう>自分。

そうですね。。。(;´Д`)
貴重な補足、ありがとうございます。

直感ですが、たしかにORの方が処理が速いのかなという気がします。
まあ重要なのは、この場合、書き方よりも方法論でした。

>ORで書き直すと次のとおりです。
>
>SELECT * FROM tel2addr
> WHERE tel LIKE '電話番号' || '%'
>    OR tel = (SELECT tel FROM tel2addr AS t
>               WHERE '電話番号' LIKE t.tel || '%'
>               ORDER BY CHAR_LENGTH(t.tel) DESC
>               LIMIT 1 OFFSET 0)
>

蛇足:
この検索では例えば電話番号に"0"とだけ入力すると、
日本中の局番が返ってきますが。それはそれで、
ユーザインターフェースの問題ですね。
候補が10件以内ならユーザにセレクトさせ、それ
以上ならエラーにするとか、工夫はいろいろできます
ので、問題ナシです。
具体的すぎるレコード(個人の電話番号とか)があると、
抑制する必要が出てきますが・・・

----
藤本 悟司

株式会社トライスクエア
〒104-0045 東京都中央区築地3-5-13北村ビル5F
TEL: 03-5148-3345 / FAX: 03-5148-3346
Mobile: 070-6668-4644
E-Mail: satoshi @ try-square.co.jp
WEB: http://www.try-square.co.jp/

Key fingerprint = 95F2 6B3D 0B8C 374A 5E67  CA02 F28F 703A C1A9 8346



pgsql-jp メーリングリストの案内