- ベストアンサー
oracleのテーブルデータの列を昇順にしたい
初めて利用するのでうまく説明できていないと思いますが、よろしくお願いします。 Microsoft Access(以下Access)にMicrosoft Excelのデータを取り込み,さらにAccessからoracle(9i)へエクスポートしたとき、列が正しい昇順になりません。 列には数値型1~80が入力されていますが、ソートにすると1,12,15,16…というように10の位の数字だけで判断(!?)されてしまいます。また行がとんでいたりもします。 これを正しく昇順に並べ替えるにはどうしたらよいでしょうか? なにぶん初心者な者で(小学生に教えるかんじで)分かりやすく教えてください。(^。^;)>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんわ。 データベースのインポート時に順番は関係ありません。 sqlでselect時にorder by 句を指定して希望順に並び替えます。 select field1, field2 from tablename order by ・・ >列には数値型1~80が入力されていますが、ソートにすると1,12,15,16…というように10の位の数字だけで判断(!?)されてしまいます。また行がとんでいたりもします。 そのフィールドの属性がcharではありませんか? 属性を数値型に戻す、もしくはsqlの関数で対応するなどすればよいと思います。
その他の回答 (2)
- rabu_chihaha
- ベストアンサー率66% (8/12)
EXCELデータをACCESSに取り込むときに、数値型でなくテキスト型で取り込んでいないですか?
お礼
回答ありがとうございます。 取り込んだ後にAccessで数値型に直したのですが、それではダメですか?
- koutarou504
- ベストアンサー率44% (182/407)
とりあえず、質問のカテゴリを変える事をお勧めします。 さすがに JavaScript のカテゴリーで Oracle は、 いくらプログラミングの処でもあまりプログラムは詳しくない人が多いかと・・・。 せめて、プログラミング - その他(プログラミング) のカテゴリーにするか コンピューター [技術者向け] - データベース - Oracle のカテゴリーにしましょう。 で、 >1,12,15,16…というように10の位の数字だけで判断 これは、数値でなく数字として扱われています。 数字としては正しい昇順のソートです。 1と12ですが、まず一桁目として左からいずれも1なので同じと扱われ左から二桁目は1にはデータなしで12には2がありデータなしの方が昇順で先と扱われている訳です。 詳しくは覚えていないので改めて調べるなり他の方の回答を待つべきですが、 うろ覚えの知識では、 確か明示的に数値としての昇順とか単項目でのソート指定でないと文字(数字)としてのソート(昇順)処理をした様な気がしますが、 その辺を気にしながら、 エクスポートがまず数値として行われているのか? oracle側の項目は現在も数値となっているか? ソートの指定の仕方はどの様な規則になっているのか? を調べられるのも良いかと・・・。 まぁ1番はとにかくカテゴリーを変えて改めて質問される事かもしれませんが・・・。 一応、oracleもAccessも経験あるのですが ちょっと覚えていなくて申し訳ございません。
お礼
回答ありがとうごさいます。 わたしもカテゴリーについては悩みました(^。^;)> ご指摘通りに質問しなおします!
お礼
回答ありがとうございます。 早速試してみます。