[pgsql-jp: 33955] Re: 五十音順検索
Takao Kato
sirius @ jp.fujitsu.com
2004年 9月 1日 (水) 18:45:00 JST
名無しさんへ
> テーブル内に全角カタカナのみが入力されたカラム(カラム名例:hurigana)
> が存在して、そのカラムのデータに対して五十音検索を行いたいと考えており
> ます。
> (ア行・カ行・・・)
識者はもっとエクセレントな書き方をするでしょうが自分なら、
# 文字コードの問題(install方法/入力値)は無視できることが条件ですが
(1)LIKEで頑張る
=> SELECT * FROM table WHERE hurigana LIKE 'ア%';
=> SELECT * FROM table WHERE hurigana LIKE 'ア%' OR hurigana LIKE 'カ%';
(え?美しくない?)
(2)テーブル設計に手を加える
テーブル設計段階で頭文字(kashiramoji)を準備あるいはALTER TABLE
で追加して、
=> SELECT * FROM table WHERE kashiramoji in ('ア','カ'...);
とか。もちろん in を使わずに
=> SELECT * FROM table
-> WHERE kashiramoji = 'ア' OR kashiramoji = 'カ' ...;
でも構いません。
(3)テーブル設計を変更したくないけど(2)の方式
=> SELECT t.*
-> FROM (SELECT substr(hurigana,1,1) as kashiramoji ,* FROM table) t
-> WHERE t.kashiramoji in ('ア',...);
ですかねぇ。(3)なんかはcost掛かりそう...
-------------------------------------------------------------
加藤@川崎
pgsql-jp メーリングリストの案内