在mysql中使用CAST进行不正确的排序

时间:2014-10-21 09:49:08

标签: mysql sql sorting sql-order-by

我用这个作为示例来显示我使用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

3 个答案:

答案 0 :(得分:0)

尝试

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

答案 1 :(得分:0)

你几乎就在那里,使用

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

答案 2 :(得分:0)

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

用于逆序

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