MySQL(マイエスキューエル)

【MySQL】文字列をソートしたい

以前弊社で構築したMySQLを使用したシステムがあるのですが、

本日はそのシステムの部分改修の依頼を受けたので、

対応していました。

 

その際に、

数字データを保存しているある項目でソートして該当レコードを取得する処理が必要だったのですが、

ちょっとした問題が発生しました。

 

ソートに使用したい項目がVarcharで作成されていた為に、

上手く並び替えが行えないという、

何とも残念な結果に。。。

例えば、

| 10 |
| 2  |
| 1  |
| 15 |

というデータがあったとして、

昇順で並び替える場合には、

================
1, 2, 10, 15
================

という結果が欲しいのですが、

実際には、

文字列として扱われてしまうために、

================
1, 10, 15, 2
================

という結果が返ってきてしまいます。

 

こんな場合にはカラムを数値型に変更してしまいたいのですが、

制作者が何かの意図があって「Varchar」にしている可能性あり、

怖いので、

それは却下となりました。

仕方ないので、

CAST関数を使って対応することに。

 

その場合のSQLは、

select * from データベース名 order by cast(カラム名 as signed)

となります。

もしくは、

select * from データベース名 order by カラム名 + 0

というように、

「カラム名 + 0」

としても、

同じ結果が得られるようです。

0
この記事を書いている人
株式会社ディープ

名前ダッチ

メールアドレスadachi@deep-deep.jp

Twitterはこちら >>

  • コメント: 0

関連記事

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

最近の記事

  1. プログラマーになろう
  2. オンライン学習支援サイト
  3. Python スクール
  4. ITスクール
  5. フリーランス
  6. 太子堂八幡神社の茅の輪
  7. システムエラー
  8. WP:WordPress(ワードプレス)
  9. ITコンサルティング
  10. トラブル

Twitter

ダッチ@職業ブロガー兼プログラマー
@gatsu0000

アーカイブ

PAGE TOP