- ベストアンサー
データベースにテキスト型で入っている数値を並べ替えるには?
VB6.0で開発しているのですが、 ACCESSにテキスト型で入っている数値のデータを、 SQL文で抽出してきて、ラベルに順番に表示させようと思ったのですが、 テキスト型を昇順に並べ替えると 1 10 11 . . . 19 2 20 となってしまいます。 数値型に変換しようとも思ったのですが、 データとして数値だけが入るとは限らないので、 どうしていいか困ってます。 何か良い解決策はないものでしょうか? どうぞ、よろしくお願いしますm(_ _)m
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
身近にVB環境がないので、Accessでやってみました。 やるとしたら、SQLにて、 SELECT Format$(A,"00000") AS AA FROM TableA ORDER BY Format$(A,"00000"); で、取り敢えず数値として扱える数字のデータは"00001"といった形に変換され、 "A"とか"B"とかのデータは、そのまま"A","B"でした。 あとは、表示の際に書式で頭のゼロを消してやればいいのでは...(表示のところまではやってません)。 あくまで結果論だけで。 数値以外の値が入る可能性がありながら、数字でソートしたい、 というちょっとおかしなことに、 あまりに気持ち悪いので、私なら絶対やりませんけど。
その他の回答 (1)
- chie65536
- ベストアンサー率41% (2512/6032)
ソート用の項目をSQL文中の式で生成させ、その項目でソートするのはどうでしょうか。 例えば、データの最大長が6文字であれば、先頭に半角スペースを足して全体が6文字になる文字列を式で作り(以下の「_」は半角スペースです) 1 → _____1 10 → ____10 11 → ____11 | 19 → ____19 2 → _____2 20 → ____20 とすれば _____1 _____2 ____10 ____11 ____19 ____20 の順番に並ぶと思います。 但し、数字以外の文字が来た場合、変な順番になってしまうかも知れませんが。