ユーザ用ツール

サイト用ツール


02_freebsd:04_database:01_mysql:mysql_-_数値に変換してソート

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
02_freebsd:04_database:01_mysql:mysql_-_数値に変換してソート [2013/03/15 10:15]
matsui
02_freebsd:04_database:01_mysql:mysql_-_数値に変換してソート [2013/03/15 10:23] (現在)
matsui
ライン 1: ライン 1:
 +====== MySQL - 数値に変換してソート ======
  
 +backup_sizeがvarcharの為、普通にソートするとこのようになってしまいます。
 +<code console>
 +mysql> select disk_id,​backup_size from backups order by backup_size desc;
 ++---------+-------------+
 +| disk_id | backup_size |
 ++---------+-------------+
 +|      67 | 359728 ​     |
 +|      65 | 359656 ​     |
 +|    4570 | 240392 ​     |
 +|    3949 | 18931152 ​   |
 +|    3869 | 18379424 ​   |
 +|    3869 | 18086912 ​   |
 +|    3173 | 17994708 ​   |
 +|    3173 | 17870688 ​   |
 +|    3173 | 17870688 ​   |
 +|    4933 | 170412 ​     |
 +|    3829 | 14502832 ​   |
 +|    3781 | NULL        |
 ++---------+-------------+
 +12 rows in set (0.01 sec)
 +</​code>​
 +
 +===== こうすれば、数値に変換してソートできる。 =====
 +0を足して、無理やり数値へ変換する。
 +<code console>
 +mysql> select disk_id,​backup_size from backups order by backup_size + 0 desc;
 ++---------+-------------+
 +| disk_id | backup_size |
 ++---------+-------------+
 +|    3949 | 18931152 ​   |
 +|    3869 | 18379424 ​   |
 +|    3869 | 18086912 ​   |
 +|    3173 | 17994708 ​   |
 +|    3173 | 17870688 ​   |
 +|    3173 | 17870688 ​   |
 +|    3829 | 14502832 ​   |
 +|      67 | 359728 ​     |
 +|      65 | 359656 ​     |
 +|    4570 | 240392 ​     |
 +|    4933 | 170412 ​     |
 +|    3781 | NULL        |
 ++---------+-------------+
 +12 rows in set (0.00 sec)
 +</​code>​
 +
 +===== castを利用する場合 =====
 +<code console>
 +mysql> select disk_id,​backup_size from backups order by cast( backup_size as SIGNED ) desc;
 ++---------+-------------+
 +| disk_id | backup_size |
 ++---------+-------------+
 +|    3949 | 18931152 ​   |
 +|    3869 | 18379424 ​   |
 +|    3869 | 18086912 ​   |
 +|    3173 | 17994708 ​   |
 +|    3173 | 17870688 ​   |
 +|    3173 | 17870688 ​   |
 +|    3829 | 14502832 ​   |
 +|      67 | 359728 ​     |
 +|      65 | 359656 ​     |
 +|    4570 | 240392 ​     |
 +|    4933 | 170412 ​     |
 +|    3781 | NULL        |
 ++---------+-------------+
 +12 rows in set (0.00 sec)
 +</​code>​
02_freebsd/04_database/01_mysql/mysql_-_数値に変換してソート.txt · 最終更新: 2013/03/15 10:23 by matsui

Yesterday:760 Today:052 Total:03622