C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

漢数字列のソート

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■90023 / inTopicNo.1)  漢数字列のソート
  
□投稿者/ me (1回)-(2019/01/31(Thu) 11:04:36)

分類:[データベース全般] 

ポストぐレスを使っています

数字列を足してorder byする方法をせずに、漢数字の列でソートする(order by 漢数字列)と
「第一 第三 第二 第五 第四」となるのを「第一 第二 第三 第四 第五」となる様にソートするには、
どうすればよろしいですか?


DBやSQLに詳しい方よろしくお願いします
引用返信 編集キー/
■90025 / inTopicNo.2)  Re[1]: 漢数字列のソート
□投稿者/ WebSurfer (1735回)-(2019/01/31(Thu) 11:17:42)
No90023 (me さん) に返信

DB は何なのですか? SQL Server?

照合順序は?
引用返信 編集キー/
■90026 / inTopicNo.3)  Re[1]: 漢数字列のソート
□投稿者/ kiku (71回)-(2019/01/31(Thu) 11:33:19)
postgresqlは使ったことがないので
検索しただけですが、下記は参考になりますでしょうか?

https://qiita.com/anoworl/items/af9f12f915b8969ea40d
https://hacknote.jp/archives/24914/

引用返信 編集キー/
■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)
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ