■90028 / inTopicNo.4) |
Re[1]: 漢数字列のソート |
□投稿者/ 魔界の仮面弁士 (2033回)-(2019/01/31(Thu) 14:27:56)
|
2019/01/31(Thu) 15:24:20 編集(投稿者)
■No90023 (me さん) に返信 > ポストぐレスを使っています PostgreSQL が手元に無いため検証はできませんが:
> 漢数字の列でソートする(order by 漢数字列)と > 「第一 第三 第二 第五 第四」となるのを
OS のロケールにマッピングされた照合順序に依存するようなので、 COLLATE 句を明示する必要がありそうです。 https://www.postgresql.jp/document/9.1/html/collation.html
何を指定するべきかまでは調べ切れていませんし、 対応する照合順序が存在するかどうかさえ分かりませんが…。
> 「第一 第二 第三 第四 第五」となる様にソートするには、
もしも『辞書順』ではなく、単純に『コードポイント順』に バイナリ列の値の順序で並べられるのだとすれば、 Unicode 系の場合は「一 三 二 五 四」 日本語系符号化だと「一 五 三 四 二」になると思います。
CJK 統合漢字は、基本的に「部首画数順」に割り当てられるので、 Unicode だと下記の順。
「一」:部首 一画「一(いち)」+0画 「七」:部首 一画「一(いち)」+1画 「三」:部首 一画「一(いち)」+2画 「九」:部首 一画「乙(おつ)」+1画 「二」:部首 二画「二(に)」+0画 「五」:部首 二画「二(に)」+2画 「八」:部首 二画「八(はち)」+0画 「六」:部首 二画「八(はち)」+2画 「十」:部首 二画「十(じゅう)」+0画 「四」:部首 二画「口(くにがまえ)」+2画
Shift_JIS や EUC-JP などは音読み順。
「一」:いち 「九」:く 「五」:ご 「三」:さん 「四」:し 「七」:しち 「十」:じゅう 「二」:に 「八」:はち 「六」:ろく
----
コードページ 65001:UTF-8 一(E4,B8,80) → 三(E4,B8,89) → 二(E4,BA,8C) → 五(E4,BA,94) → 四(E5,9B,9B)
コードページ 1200:UTF-16 (リトルエンディアン) 一(00,4E) → 三(09,4E) → 二(8C,4E) → 五(94,4E) → 四(DB,56)
コードページ 932:Shift_JIS 一(88,EA) → 五(8C,DC) → 三(8E,4F) → 四(8E,6C) → 二(93,F1)
コードページ 51932:EUC-JP コードページ 20932:JIS 0208-1990 および 0212-1990 一(B0,EC) → 五(B8,DE) → 三(BB,B0) → 四(BB,CD) → 二(C6,F3)
コードページ 50220:iso-2022-jp (JIS コード) 一(30,6C) → 五(38,5E) → 三(3B,30) → 四(3B,4D) → 二(46,73)
|
|