加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 海宁网 (https://www.hainingwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

varchar类别的字段存储纯数字的排序

发布时间:2022-06-28 07:44:27 所属栏目:编程 来源:互联网
导读:如果表字段的类型为varchar型,但是里面存储的是纯数字,怎么实现按照数字的大小来排序? 下面的方法对于mysql和oracle都实用 order by 字段+0 order by 字段*1 等等都可以实现 mysql create table tn (id varchar(30),name varchar(50)); mysql show create
  如果表字段的类型为varchar型,但是里面存储的是纯数字,怎么实现按照数字的大小来排序?
  下面的方法对于mysql和oracle都实用
  order by 字段+0
  order by 字段*1
  等等都可以实现
 
  mysql> create table tn (id varchar(30),name varchar(50));
  mysql> show create table tn;
  +-------+-----------------------------------------------------------------------------------------------------------------------------+
  | Table | Create Table                                                                                                                |
  +-------+-----------------------------------------------------------------------------------------------------------------------------+
  | tn    | CREATE TABLE `tn` (
    `id` varchar(30) DEFAULT NULL,
    `name` varchar(50) DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

  mysql> select * from tn;
 
  +------+------+
  | id   | name |
  +------+------+
  | 1    | a    |
  | 10   | b    |
  | 11   | bb   |
  | 2    | bb   |
  | 5    | c    |
  | 3    | f    |
  | 6    | g    |
  +------+------+
 
  使用order by语句进行排序
  mysql> select * from tn order by id desc;
  +------+------+
  | id   | name |
  +------+------+
  | 6    | g    |
  | 5    | c    |
  | 3    | f    |
  | 2    | bb   |
  | 11   | bb   |
  | 10   | b    |
  | 1    | a    |
  +------+------+
  7 rows in set (0.00 sec)
 
  貌似是不起作用,因为id列的值存的是字符串类型的
  解决:
  使用字段+0解决
 
  mysql> select * from tn order by id+0 desc;
  +------+------+
  | id   | name |
  +------+------+
  | 11   | bb   |
  | 10   | b    |
  | 6    | g    |
  | 5    | c    |
  | 3    | f    |
  | 2    | bb   |
  | 1    | a    |
  +------+------+
  7 rows in set (0.00 sec)
 
  或者使用 字段*1解决
  mysql> select * from tn order by id*1 desc;
  +------+------+
  | id   | name |
  +------+------+
  | 11   | bb   |
  | 10   | b    |
  | 6    | g    |
  | 5    | c    |
  | 3    | f    |
  | 2    | bb   |
  | 1    | a    |
  +------+------+
  7 rows in set (0.00 sec)

(编辑:财气旺网 - 海宁网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!