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

関連記事

最近の記事

  1. ドメインについて
  2. WP:WordPress(ワードプレス)
  3. URL設計(URLデザイン)
  4. URL「ディレクトリ名」と文字アンダースコア(_)とハイフン(-)
  5. SEO対策(外部ファイルの読み込み)
  6. URL リダイレクト
  7. インデックスされない
  8. 内部対策は必要?
  9. CMS(シーエムエス)
  10. SEO業者は必要?

Twitter

アーカイブ

PAGE TOP