SQLのORDER BYの結果表示がおかしく困っています。
テーブル名:社員名簿
プライマリーキー無し
(設定厳禁)
フィールド:
| 社員ID | 氏名 | 住所 |
| VARCHER|VARCHER|VARCHER|
| P1 | 田中 |東京都 |
| P2 | 鈴木 |東京都 |
| P10 | 高橋 |千葉県 |
SQL文:
SELECT * FORM 社員名簿 ORDER BY 社員ID
出力結果:
| 社員ID | 氏名 | 住所 |
| P1 | 田中 |東京都|
| P10 | 高橋 |千葉県|
| P2 | 鈴木 |東京都|
上記のような出力結果となってしまいます。
何か良い方法はありませんか?
よろしくお願いします
No.1
- 回答日時:
これは、そうなると思います。
つまり、数値としてのソートではなく、文字列としてソートになるからです。
あ
あい
い
いい
と いう順で並ぶのが 正しいでしょう。
これと同じことです。
数値として並ばせるならば
P01
P02
P10
と 0をつけて 補ってあげないとダメです。
か もしくは Number型にするかのどちらかですね。
No.2ベストアンサー
- 回答日時:
No.1の方と同じです。
補足しますと、並び替えのルールとして、まず1桁目をソートし、次に2桁目をソートする、と言うふうに考えるとわかりやすいと思います。
P1,P2,P10とあると、まず、1桁目のPでソートとし、(この場合全て同じですね)、次に2桁目で1(P1),1(P10),2(P2)とソートします。
ですから、最大桁を見込み、0を埋めるようにしないといけません。
P0001と言った感じです。
No.3
- 回答日時:
charactor に対するorder byである限り
P10の方がP2より前にくるのは当然です。
(同様の現象でしたら エクスプローラでも確認できます)
(P1,P2,P10というファイルを作ってソート)
P01, P02, P10 とするか
社員区分|社員ID
char(varchar)|smallint等
P|1
P|2
P|10
として order by 社員区分, 社員IDとする。
後者の方がDB設計として良いと思いますが・・・
No.4
- 回答日時:
#1さん達の仰られるとおり、データベースの構造を変えられた方が良いと思いますが、データベースを作り直す事が出来ない場合の(既存データが既に存在したり)矯正手段として以下参考にお読み下さい。
Order By で、[社員ID] ではなく、[LPAD(社員ID,5,' ')]としてみては?
スペースが社員IDのコード長5になるように挿入されますので。
ただし、データベースがオラクルであった場合なのですが(^^;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- MySQL select *, `人口(男)`AND`人口(女)`/'面積' as '人口密度'FROM … 1 2023/07/03 21:05
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- Excel(エクセル) メモ帳からエクセルにセル区切りで表示させたいんです 7 2023/02/25 22:04
- PHP MySql PHP 2つのテーブルをJOINで結合 user_idで抽出 1 2023/01/03 14:04
- その他(Microsoft Office) EXCELの1行を1枚の用紙にそれぞれ印刷したい。 3 2022/10/10 11:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
並べ替えについて
-
レコードの登録順がおかしい
-
ファイルの漢数字の順番につい...
-
コンボボックスのソートについて
-
1の行を固定した上でVBAを用い...
-
エクセル、並び替え正しくソー...
-
月末日のみソートしたい
-
文字型の順番がうまく並ばない。
-
テーブルレーコードをソートし...
-
SQLで曜日のソートを月火水木金...
-
アクセスに関して。クエリの並...
-
マクロ 昇順のマクロを追加したい
-
Selectした時のレコードの取得順
-
マクロでソートをかけるときに...
-
MySQLで行番号を得たい
-
ソートのアルゴリズム等はいつ...
-
エクセルデーターの並び替え
-
エクセルVBAでデータ並べ替え
-
Oracleのソート
-
accessでDISTINCT 句と矛盾
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードの登録順がおかしい
-
エクセル、並び替え正しくソー...
-
並べ替えについて
-
1の行を固定した上でVBAを用い...
-
ファイルの漢数字の順番につい...
-
エクセルのソートについて
-
テーブルレーコードをソートし...
-
上から何番目か。
-
SQLで曜日のソートを月火水木金...
-
リストボックス内を昇順並べる方法
-
Selectした時のレコードの取得順
-
アクセスに関して。クエリの並...
-
コンボボックスのソートについて
-
accessでDISTINCT 句と矛盾
-
エクセルでダブルクリックして...
-
数字と漢字が混じった日付デー...
-
Excelの並び替え(文字数と画数...
-
都道府県順、北からソートした...
-
月末日のみソートしたい
-
エクセルの縦列のソートできま...
おすすめ情報