我写...
ORDER BY column ASC
但我的专栏是VARCHAR
,而且排序错误,如1, 10, 2
,而不是1, 2, 10
。
如何进行排序,如1, 2, 10
?
答案 0 :(得分:9)
order by
cast(column as float)
注意:
编辑:对于MySQL。 You can not cast to float
order by
cast(column as decimal(38,10))
答案 1 :(得分:3)
你可以转换为int ...
order by cast(column as int)
<强>样本强>
DECLARE @q as table(
name varchar(50),
columnn varchar(10)
)
insert into @q
VALUES('one','1'),('one','10'),('one','20'),('one','3'),('one','2'),('one','20')
select * from @q order by cast (columnn as int) desc
打印
-------------------------------------------------- ----------
one 20
one 20
one 10
one 3
one 2
one 1
所以,丹尼尔,是的,它有效:)
<强>更新强>:
order by cast(column as decimal(20,6))
将列值转换为最多20位和小数点后6位的十进制数。根据您的实际需求进行调整。
答案 2 :(得分:1)
ORDER BY columnname * 1 ASC
示例:表用户具有列值[varchar(20)]
的值。
然后你可以查询它:
SELECT * FROM user ORDER BY value * 1
在我们相乘之后 MySQL 会将其视为一个数字,但不建议这种方式用于繁重的负载。
答案 3 :(得分:1)
试试这个:
order by CAST(column as UNSIGNED)