つい集めてしまうものはなんですか?

よろしくお願いします。
WIN2000、VB6.0+Oracleで開発しています。

select文で実行すると並び順が違ってしまう。
文字型をソートすると「$ * 0~9 A~Z」の順番になってしまうのですが、これは普通なのでしょうか?
出来れば「$ * A~Z 0~9 」と並びたいのですが。

Select文
SELECT DISTINCT gkey,G01,G02,G03,G04,G05,G06,G07,G09,G10,to_char((G217+G227+G237+G247) , '9,999,999,999') AS ZissekiG ,G249 FROM SHYOUHIN WHERE G02 = '308'

結果
$ * 0~9 A~Z
になってしまいます。
(Gkey)
$00
$01
*02
*04
100
102
103
C00
N09

できれば 
$ * A~Z 0~9
(Gkey)
$00
$01
*02
*04
C00
N09
100
102
103
したいと思っています。ORDER BYでGkeyの指定してもうまくいかない…。
すいませんがどうしたら良いか、お願いします。

A 回答 (3件)

>これは普通なのでしょうか?


普通です。
A-Z,0-9の並びは、EBCDICな文化を持つ環境で育った方には
自然な順番なんですが、unixやpcで使われるascii,sjis,eucでは、
0-9,A-Zの順番が普通です。

(EBCDICなコード順でソートする例)
SELECT DISTINCT gkey,G01,G02,G03,G04,G05,G06,G07,G09,G10,to_char((G217+G227+G237+G247) , '9,999,999,999') AS ZissekiG ,G249 FROM SHYOUHIN WHERE G02 = '308'
ORDER BY convert(gkey,'JA16EBCDIC930')
    • good
    • 0
この回答へのお礼

早速、ありがとうございます。
EBCDICというのは知りませんでした。

>ORDER BY convert(gkey,'JA16EBCDIC930')
を足してやりましたらうまくいったのですが、$とSが同じと判断しているのでしょうか「Q→$→S」の順番になってしまいます。

これを回避する方法は無いでしょうか?

お礼日時:2005/06/08 15:46

>>ORDER BY convert(gkey,'JA16EBCDIC930')


>「Q→$→S」の順番になってしまいます。
>これを回避する方法は無いでしょうか?

少し思い違いをしてました。

ORDER BY convert(gkey,'JA16DBCS')

を使って下さい。
    • good
    • 0
この回答へのお礼

素早い回答ありがとうございます。

おかげさまで解決しました。

お礼日時:2005/06/08 16:30

SELECT DISTINCT gkey,G01,G02,G03,G04,G05,G06,G07,G09,G10,to_char((G217+G227+G237+G247) , '9,999,999,999') AS ZissekiG ,G249 FROM SHYOUHIN WHERE G02 = '308'


order by gkey

にしても駄目ですか?
駄目なら、Oracleのソートがそういう仕様なので、VBで独自にソートしてください。
    • good
    • 0
この回答へのお礼

早速ありがとうございます。

やはりダメなのでしょうか?
独自でソートする方法も考えてみます。

お礼日時:2005/06/08 15:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報