(現在 過去ログ33 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■5235 / inTopicNo.1)  外部dbでの並び順
  
□投稿者/ 尾形 -(2009/10/03(Sat) 09:43:25)
    よろしくお願いします

    外部dbの定義で[名称]に「昇順」ソートを設定しました
    数字→アルファベット→ひらがな→漢字→半角カタカナ
    の順で並んできます

    抽出後、桐で並べ替えると
    数字→アルファベット→半角カタカナ→ひらがな→漢字
    に並びます
    半角カタカナの順位が違います
    外部dbの文字コードはsjisで設定しています

    できれば
    数字→アルファベット→半角カタカナ→ひらがな→漢字
    で外部db側もソートして欲しいのですが
    これってそんなもんなのでしょうか?

引用返信 [メール受信/OFF] 削除キー/
■5237 / inTopicNo.2)  Re[1]: 外部dbでの並び順
□投稿者/ 今村 誠 -(2009/10/03(Sat) 16:10:18)
    尾形さんこんにちは
    桐の表で並び替え条件を保存して呼び出すようにしては

    1)並び替え→条件→"ふりがな"→辞書順
    未定義値→記号→数字→アルファベット→ひらがな→漢字

    2)列の指定 昇順で並び替え
    未定義値→半角スペース→半角数字→半角英字→
    半角カタカナ→全角スペース→記号→全角数字→
    全角英字→ひらがな→全角カタカナ→漢字

    二見さんとニ見さん区別が難しいです。
引用返信 [メール受信/OFF] 削除キー/
■5238 / inTopicNo.3)  Re[1]: 外部dbでの並び順
□投稿者/ hidetake -(2009/10/03(Sat) 19:33:45)
    2009/10/03(Sat) 19:37:38 編集(投稿者)

    MySQL の事は良くわからないけど、ネットで調べると

    COLLATE 節とか出て来るし、日本語で取りあえずコード順で
    済ませたいなら ORDER BY BINARY a とか出て来ると思います。
    http://dev.mysql.com/doc/refman/4.1/ja/charset-binary-op.html

    桐だと直接はして出来ないので、無理矢理わたすとか、MySQL
    のデフォルト設定に出来ないのか!?とか。


    # 桐の外部DB を使用するなら、まずは、使用する「外部DB」の
    # マニュアルなり、SQL関係の資料・参考書を見るなり、外部DB
    # の事を知ることと、桐との関わりでどうなるかもあるので
    # 良くわからないことがあったらログ(外部DBの)を調べるなりが
    # 必要だと思います。

引用返信 [メール受信/OFF] 削除キー/
■5239 / inTopicNo.4)  Re[1]: 外部dbでの並び順
□投稿者/ うにん -(2009/10/03(Sat) 21:03:58)
    > 外部dbの定義で[名称]に「昇順」ソートを設定しました
    > 数字→アルファベット→ひらがな→漢字→半角カタカナ
    > の順で並んできます

    半角カタカナのSJISコードは(一部の)漢字より後だからしょうがないですね。

    > 外部dbの文字コードはsjisで設定しています

    いくつかやってみましたが、eucjpmsにすれば
    半角カタカナ→ひらがな→全角カタカナ→漢字
    になりますね。
引用返信 [メール受信/OFF] 削除キー/
■5240 / inTopicNo.5)  Re[2]: 外部dbでの並び順
□投稿者/ hidetake -(2009/10/04(Sun) 08:17:40)
    2009/10/04(Sun) 08:46:03 編集(投稿者)

    >>外部dbの定義で[名称]に「昇順」ソートを設定しました
    >>数字→アルファベット→ひらがな→漢字→半角カタカナ
    >>の順で並んできます
    >
    > 半角カタカナのSJISコードは(一部の)漢字より後だからしょうがないですね。
    >
    >>外部dbの文字コードはsjisで設定しています
    >
    > いくつかやってみましたが、eucjpmsにすれば
    > 半角カタカナ→ひらがな→全角カタカナ→漢字
    > になりますね。

    UTF8 ならばわかるのですが SJIS でですか?
    MySQL の DB が SJIS 設定でも内部コードとしては
    UTF8 で処理しているというのならばわかります。

    PostgreSQL でも DB を UTF8 に設定すれば「半角カナ」
    は後ろに来ます。

    UTF8 の場合
    0 1 A B a b ◆ あ ア イ 亜 K 0 1 ア イ

    EUC-JP の場合
    0 1 A B a b ア イ K ◆ 0 1 ア イ 亜

    SJIS は環境無し
    (initdb -E sjis --no-locale し直す必要があるため)

    無理矢理並べ替えたいなら、半角カナを全角化するような
    ユーザ定義関数作って、ソートの時に変換して並べ替える
    とか? 遅くなるでしょうが。


    # 自分の場合、PostgreSQL 8.4 に移った方がよいかな!?
    # http://lets.postgresql.jp/documents/technical/text-processing/2


引用返信 [メール受信/OFF] 削除キー/
■5241 / inTopicNo.6)  Re[3]: 外部dbでの並び順
□投稿者/ うにん -(2009/10/04(Sun) 11:54:46)
    >>いくつかやってみましたが、eucjpmsにすれば
    >>半角カタカナ→ひらがな→全角カタカナ→漢字
    >>になりますね。
    >
    > UTF8 ならばわかるのですが SJIS でですか?
    > MySQL の DB が SJIS 設定でも内部コードとしては
    > UTF8 で処理しているというのならばわかります。

    SJISの半角カナは1バイトで0xa0〜0xdf
    2バイト文字は0x8140〜0x9ffc(記号全角かなカナ漢字第ニ水準の途中まで?)と0xe040〜0xfffc(残りの漢字)
    なので単純に文字コードで比較すれば半角カナは漢字の間に入る。猫→カナ→炬燵

    桐の場合はSJISでなくJISで半角カナでも内部は2バイトだし(0x00a0〜)、「辞書順」というのもあるからデフォルトで同じにならないのはしょうがないですね。

    > PostgreSQL でも DB を UTF8 に設定すれば「半角カナ」
    > は後ろに来ます。
    >
    > UTF8 の場合
    > 0 1 A B a b ◆ あ ア イ 亜 K 0 1 ア イ
    >
    > EUC-JP の場合
    > 0 1 A B a b ア イ K ◆ 0 1 ア イ 亜

    そうか、EUC-JPだと漢字の順番がSJIS(JIS)とは違うのですね。
    カナのためにこれを使うのは無理か...

引用返信 [メール受信/OFF] 削除キー/
■5242 / inTopicNo.7)  Re[4]: 外部dbでの並び順
□投稿者/ hidetake -(2009/10/04(Sun) 12:01:46)
    > SJISの半角カナは1バイトで0xa0〜0xdf
    > 2バイト文字は0x8140〜0x9ffc(記号全角かなカナ漢字第ニ水準の途中まで?)と0xe040〜0xfffc(残りの漢字)
    > なので単純に文字コードで比較すれば半角カナは漢字の間に入る。猫→カナ→炬燵
    >

    1バイト2バイトの文字を考慮しないで、最初の
    1バイト目だけで比較しているのですね。

    となると、複数の文字列に対しては、更に微妙
    になりそうですね。

引用返信 [メール受信/OFF] 削除キー/
■5243 / inTopicNo.8)  Re[4]: 外部dbでの並び順
□投稿者/ うにん -(2009/10/04(Sun) 14:38:50)
    >>EUC-JP の場合
    >>0 1 A B a b ア イ K ◆ 0 1 ア イ 亜

    この「K」のSJISコードがfc4bなんだけど、なぜかMySQLのsjis列には入らない。
    cp932になら入る。
引用返信 [メール受信/OFF] 削除キー/
■5244 / inTopicNo.9)  Re[5]: 外部dbでの並び順
□投稿者/ hidetake -(2009/10/04(Sun) 17:41:51)
    一応、手元の SORTコマンド(SORT.EXE)でのソートの比較

    さすがに DOSのは直ぐには出てきません。

    ----------------------------------------------------------------
    Microsoft の 標準の SORT.EXE でのデフォルトソートでは
    type text.txt | sort
    ◆ 0 0 1 1 A a B b ア ア あ イ イ 亜 K
    ----------------------------------------------------------------
    Microsoft の 標準の SORT.EXE での LOCALE C 指定のソートでは
    type text.txt | sort /LOCALE C
    0 1 a A b B ◆ あ ア イ 亜 K 0 1 ア イ
    ----------------------------------------------------------------



    ----------------------------------------------------------------
    Microsoft の UNIXツール SORT.EXE でのデフォルトソートでは
    type text.txt | C:\WINDOWS\COMMAND\SORT.EXE
    0 1 A B a b ◆ 0 1 あ ア イ 亜 ア イ K
    ----------------------------------------------------------------
    あとはパラメータの詳細がわからない。
    Usage: sort [-cmu] [-o outfile] [-y[kmem]] [-zmaxrec] [-dfiMnrb] [-t x]
    [-k keydef] [file...]

    Licensed from the MKS Toolkit.
    Copyright Mortice Kern Systems Inc. (www.mks.com) 1985-1999.
    All rights reserved.



    ----------------------------------------------------------------
    UNIXツールをWindowsに移植した SORT.EXE(誰版か忘れた)では、標準で
    type text.txt | "C:\Program Files\TOOLS\sort.exe"
    0 1 A B a b ◆ 0 1 あ ア イ 亜 ア イ K
    ----------------------------------------------------------------
    UNIXツールをWindowsに移植した SORT.EXE(誰版か忘れた)では、
    -f: ソートの際、英字の大文字小文字を区別しない。で
    type text.txt | "C:\Program Files\TOOLS\sort.exe" -f
    ◆ あ 0 1 ア イ 亜 ア イ K 0 1 A a B b
    ----------------------------------------------------------------

引用返信 [メール受信/OFF] 削除キー/
■5245 / inTopicNo.10)  Re[6]: 外部dbでの並び順
□投稿者/ 尾形 -(2009/10/05(Mon) 06:59:05)
    どうも、ありがとうございます

    データベースによって違うのですね
    そんなものだと思って対応します

    ありがとうございました


    # 桐だけ考えてsjisを選択したけど
    # Web化の時にヤバそうだし
    # UTF-8にした方がいいかな

引用返信 [メール受信/OFF] 削除キー/



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

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -