• ベストアンサー

oracleのテーブルデータの列を昇順にしたい

 初めて利用するのでうまく説明できていないと思いますが、よろしくお願いします。  Microsoft Access(以下Access)にMicrosoft Excelのデータを取り込み,さらにAccessからoracle(9i)へエクスポートしたとき、列が正しい昇順になりません。  列には数値型1~80が入力されていますが、ソートにすると1,12,15,16…というように10の位の数字だけで判断(!?)されてしまいます。また行がとんでいたりもします。  これを正しく昇順に並べ替えるにはどうしたらよいでしょうか? なにぶん初心者な者で(小学生に教えるかんじで)分かりやすく教えてください。(^。^;)>

質問者が選んだベストアンサー

  • ベストアンサー
  • geso775
  • ベストアンサー率29% (15/51)
回答No.3

こんばんわ。 データベースのインポート時に順番は関係ありません。 sqlでselect時にorder by 句を指定して希望順に並び替えます。 select field1, field2 from tablename order by ・・ >列には数値型1~80が入力されていますが、ソートにすると1,12,15,16…というように10の位の数字だけで判断(!?)されてしまいます。また行がとんでいたりもします。 そのフィールドの属性がcharではありませんか? 属性を数値型に戻す、もしくはsqlの関数で対応するなどすればよいと思います。

m23
質問者

お礼

回答ありがとうございます。 早速試してみます。

その他の回答 (2)

回答No.2

EXCELデータをACCESSに取り込むときに、数値型でなくテキスト型で取り込んでいないですか?

m23
質問者

お礼

回答ありがとうございます。 取り込んだ後にAccessで数値型に直したのですが、それではダメですか?

回答No.1

とりあえず、質問のカテゴリを変える事をお勧めします。 さすがに JavaScript のカテゴリーで Oracle は、 いくらプログラミングの処でもあまりプログラムは詳しくない人が多いかと・・・。 せめて、プログラミング - その他(プログラミング) のカテゴリーにするか コンピューター [技術者向け] - データベース - Oracle のカテゴリーにしましょう。 で、 >1,12,15,16…というように10の位の数字だけで判断 これは、数値でなく数字として扱われています。 数字としては正しい昇順のソートです。 1と12ですが、まず一桁目として左からいずれも1なので同じと扱われ左から二桁目は1にはデータなしで12には2がありデータなしの方が昇順で先と扱われている訳です。 詳しくは覚えていないので改めて調べるなり他の方の回答を待つべきですが、 うろ覚えの知識では、 確か明示的に数値としての昇順とか単項目でのソート指定でないと文字(数字)としてのソート(昇順)処理をした様な気がしますが、 その辺を気にしながら、 エクスポートがまず数値として行われているのか? oracle側の項目は現在も数値となっているか? ソートの指定の仕方はどの様な規則になっているのか? を調べられるのも良いかと・・・。 まぁ1番はとにかくカテゴリーを変えて改めて質問される事かもしれませんが・・・。 一応、oracleもAccessも経験あるのですが ちょっと覚えていなくて申し訳ございません。

m23
質問者

お礼

回答ありがとうごさいます。 わたしもカテゴリーについては悩みました(^。^;)> ご指摘通りに質問しなおします!

関連するQ&A