[Firebird-jp-general] order by の"ヴ"の並びについて

Back to archive index

Hiroaki Kitahata kitah****@wingc*****
2017年 1月 10日 (火) 18:40:57 JST


北畑と申します。

Firebird 2.1 で characterset が UTF8 の 
furigana varchar(40) のようなフィル―ドを持つテーブルに対して
  select * from TBL order by furigana
というクエリを発行すると
"ヴ" の文字はカタカナの後ろの方に並びます。
(Firebird 3.0 でも同じ)

これを Excel 等で整列すると、"ヴ" は "ウ" の次に並びます。
これは、windows API の CompareString 関数の動作から来ている
ものと思います。(Delphi XE8 で実験)
例
Firebird だと アイウエオヴ の順
Excel だと アイウヴエオ の順

どちらも仕様だと言えばそれまでのような気がしますが、
プログラム中で、CompareString 関数を使ったソート処理を書いた場合は、
order by での並びと異なることになってしまいます。
(実際 Delphi の kbmMemTable というメモリ上のテーブルコンポーネントを
  使っていて、MemTbl.SortOn('furigana', []); とすると、こうなります)

Firebird の oreder by の並びをExcel 等と同じ並びにするには
どのようにすれば良いか、どなたかご存じないでしょうか。

-- 
Hiroaki Kitahata <kitah****@wingc*****>




Firebird-jp-general メーリングリストの案内
Back to archive index