[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 メーリングリストの案内