[pgsql-jp: 29865] Re: Postgresでの日本語検索

Takao Kato sirius @ jp.fujitsu.com
2003年 5月 13日 (火) 18:46:29 JST


加藤@川崎です。

FAQだったりする気がする....

> はじめまして。PostgreSQLメーリングリスト
> に入ったばかりの、荻野といいます。

まずはアーカイブ検索を試されるのがよろしいかと思います。わりと最近も同
じ現象で苦しんでいる人がいたような記憶があります。
# と突き放せるなら楽なんだけれど ^^;

> select * from KEYWORD  where substr(kana,1,1) >= 'み'
>  and substr(kana,1,1) < 'む'   order by kana ASC;
> 
..snip..
>
> ここでは、「み」からはじまるカラムがほしいのに、
> わけのわからないものが選択されてしまいます。
> なにか、ご存知の方がいましたら、ご教授ねがえないでしょうか?


(7.3.2ですから) initdb 実行時に --no-locale 指定していない...に一票!!


ちなみに 7.1.2 で configure 時に no-locale と enable-multibyte を指定
した環境では、以下が正しく動作するのを確認しています。
# 『正規表現の方が』と突っ込みもはいっていますが、あえて substr 利用

-- 8< -- 8< -- 8< --
create temp table test(
  a text
);

-- は〜ほ ま〜も ら〜ろ を3文字づつ区切り
-- その3文字を並び替え
INSERT INTO test VALUES('はひふ');
INSERT INTO test VALUES('ひふは');
INSERT INTO test VALUES('ふはひ');
INSERT INTO test VALUES('へほま');
INSERT INTO test VALUES('ほまへ');
INSERT INTO test VALUES('まへほ');
INSERT INTO test VALUES('みむめ');
INSERT INTO test VALUES('むめみ');
INSERT INTO test VALUES('めみむ');
INSERT INTO test VALUES('もらり');
INSERT INTO test VALUES('らりも');
INSERT INTO test VALUES('りもら');
INSERT INTO test VALUES('るれろ');
INSERT INTO test VALUES('れろる');
INSERT INTO test VALUES('ろるれ');

select * from test where substr(a,1,1) >= 'み' and substr(a,1,1) < 'む';
-- 8< -- 8< -- 8< --

ではでは
----
加藤@川崎
お便りは kato @ lantc.cs.fujitsu.co.jp まで



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