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」

としても、

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

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

名前ダッチ

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

Twitterはこちら >>

関連記事

最近の記事

  1. アフィリエイト
  2. VPSサーバー
  3. ブログのネタ探し
  4. プログラミング
  5. SSLとは
  6. 常時SSL通信設定後にやっておくべきこと
  7. 常時SSL通信設定方法
  8. htaccessとは
  9. WordPress
  10. WordPress

Twitter

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

  • 世間は今日から新入社員が入ってくる時期か。 新卒一括採用の波に乗れんかった人間やから、 同じ日に一括で社会に放り込まれるという感覚が分からん。
    about 18時間 ago via Twitter Web App

アーカイブ

PAGE TOP