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*****>