【问题标题】:Improper Sorting using CAST in mysql在 mysql 中使用 CAST 进行不正确的排序
【发布时间】:2026-01-25 04:40:01
【问题描述】:

我以此为例来说明我使用CAST 得到的不正确结果:

CREATE TABLE tbl (ints VARCHAR(11));

INSERT INTO tbl VALUES
('100A'), 
('100B'), 
('101'), 
('102'), 
('101A'), 
('101B'), 
('101C'), 
('101D'), 
('100C'), 
('100D'), 
('101B');

SELECT * FROM tbl ORDER BY CAST(ints AS SIGNED) 

SQL Fiddle

结果应该是

100A
100B
100C
100D
101
101A
101B
101C
101D
102

【问题讨论】:

    标签: mysql sql sorting sql-order-by


    【解决方案1】:

    试试

     SELECT *
     FROM tbl
     ORDER BY CAST(ints AS char) 
    

    【讨论】:

      【解决方案2】:

      你快到了,使用

      SELECT *
      FROM tbl
      ORDER BY CAST(ints AS SIGNED), ints
      

      【讨论】:

        【解决方案3】:
        SELECT * FROM tbl ORDER BY CAST(`ints ` AS SIGNED)
        

        逆序

        SELECT * FROM tbl ORDER BY CAST(`ints ` AS SIGNED) DESC
        

        【讨论】: