[pgsql-jp: 35240] Re: UNICODEデータベースの日本語並べ替えについて

Katsuhiko Okano k_okano @ po.ntts.co.jp
2005年 4月 13日 (水) 19:12:25 JST


岡野と申します。

Shuichi_Tamura wrote:

> 以前に「Unicodeデータベースの日本語に対するorder byがおかしい」
> (スレッド番号[pgsql-jp:35088])でマスダさんが同じ内容の質問を
> されていましたが,同様の質問です。
> 
> 単純に「あかさたな」でソートをかけると,以下のような結果になり
> ます。
> 
> test=> SELECT * FROM testtable
> test->  ORDER BY test;
>  test
> ------
>>>>>>>>>>> (10 rows)

私の環境では再現しませんでした。
OSはFedora Core release 1 、DBMSはPostgreSQL 8.0.0
端末は、WindowsXPからPuTTYという端末ソフト(を日本語化したもの)を
UTF-8で使っています。

もっと詳しい環境が分かれば誰か答えてくれるかもしれません(^^;)。
#コンパイル時のオプションやinitdb,createdb時のオプションなども、
#あると、他の人が再現させやすいと思います。


以下は、私が確認した結果です。
test3=#
test3=#
test3=# \l
       List of databases
   Name    | Owner | Encoding
-----------+-------+-----------
 test3     | okano | UNICODE
(後略)

test3=# CREATE TABLE testtable01( col1 VARCHAR(100) );
CREATE TABLE
test3=# \d testtable01
         Table "public.testtable01"
 Column |          Type          | Modifiers
--------+------------------------+-----------
 col1   | character varying(100) |

test3=#
test3=# SHOW client_encoding;
 client_encoding
-----------------
 UNICODE
(1 row)

test3=# SHOW server_encoding;
 server_encoding
-----------------
 UNICODE
(1 row)

test3=#
test3=# INSERT INTO testtable01 VALUES ('あ');
INSERT 4957085 1
test3=# INSERT INTO testtable01 VALUES ('か');
INSERT 4957086 1
test3=# INSERT INTO testtable01 VALUES ('さ');
INSERT 4957087 1
test3=# INSERT INTO testtable01 VALUES ('た');
INSERT 4957088 1
test3=# INSERT INTO testtable01 VALUES ('な');
INSERT 4957089 1
test3=# INSERT INTO testtable01 VALUES ('は');
INSERT 4957090 1
test3=# INSERT INTO testtable01 VALUES ('ま');
INSERT 4957091 1
test3=# INSERT INTO testtable01 VALUES ('や');
INSERT 4957092 1
test3=# INSERT INTO testtable01 VALUES ('ら');
INSERT 4957093 1
test3=# INSERT INTO testtable01 VALUES ('わ');
INSERT 4957094 1
test3=# INSERT INTO testtable01 VALUES ('き');
INSERT 4957095 1
test3=# INSERT INTO testtable01 VALUES ('く');
INSERT 4957096 1
test3=# INSERT INTO testtable01 VALUES ('け');
INSERT 4957097 1
test3=# INSERT INTO testtable01 VALUES ('こ');
INSERT 4957098 1
test3=#
test3=# SELECT col1, char_length(col1), octet_length(col1) FROM testtable01 ORDER BY col1;
 col1 | char_length | octet_length
------+-------------+--------------
 あ   |           1 |            3
 か   |           1 |            3
 き   |           1 |            3
 く   |           1 |            3
 け   |           1 |            3
 こ   |           1 |            3
 さ   |           1 |            3
 た   |           1 |            3
 な   |           1 |            3
 は   |           1 |            3
 ま   |           1 |            3
 や   |           1 |            3
 ら   |           1 |            3
 わ   |           1 |            3
(14 rows)

test3=#
test3=#
test3=# SELECT encode('あ', 'hex');
 encode
--------
 e38182
(1 row)

test3=# SELECT encode('か', 'hex');
 encode
--------
 e3818b
(1 row)

test3=# SELECT encode('さ', 'hex');
 encode
--------
 e38195
(1 row)

test3=# SELECT encode('た', 'hex');
 encode
--------
 e3819f
(1 row)

test3=# SELECT encode('な', 'hex');
 encode
--------
 e381aa
(1 row)

test3=#
test3=#


-- 
----------------------------------------
Katsuhiko Okano
k_okano _at_ po.ntts.co.jp
NTT Software Corp. (division "NBRO-PT4")




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