我寫的......如何使用DESC或ASC對varchar數字列進行排序?
ORDER BY column ASC
,但我的專欄是VARCHAR
並排序,而不是1, 2, 10
錯像1, 10, 2
。
我該怎麼做才能像1, 2, 10
那樣排序?
我寫的......如何使用DESC或ASC對varchar數字列進行排序?
ORDER BY column ASC
,但我的專欄是VARCHAR
並排序,而不是1, 2, 10
錯像1, 10, 2
。
我該怎麼做才能像1, 2, 10
那樣排序?
order by
cast(column as float)
注:
編輯:對於MySQL。 You can not cast to float
order by
cast(column as decimal(38,10))
您可以強制轉換爲int ...
order by cast(column as int)
DEMO
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
所以,丹尼爾,是的,它的工作原理:)
UPDATE:
order by cast(column as decimal(20,6))
定投列值,以十進制數最多20位數字和小數點後6位。根據您的實際要求進行調整。
我用這種方式 與一個查詢是相乘:
ORDER BY列名* 1個ASC
實施例:表用戶具有與列值[varchar(20)]
值。 然後你就可以查詢它:
SELECT * FROM用戶的ORDER BY值* 1
後,我們乘它MySQL的將它視爲一個號碼,但不建議重這樣加載。
試試這個:
order by CAST(column as UNSIGNED)
試試這個。
SELECT * FROM table_name ORDER BY CAST(field_name as SIGNED INTEGER) ASC
我正在使用mySql,只有這個建議工作在我的情況'''SELECT v.value AS id FROM'customer_entity_varchar' v INNER JOIN customer_entity e ON v.entity_id = e.entity_id WHERE v.attribute_id = 315 AND v.entity_type_id = 1 AND e.'website_id' = 1 ORDER BY CAST(v.value as SIGNED INTEGER)DESC LIMIT 1''' –
「它按錯」:其實這是*正確*分揀VARCHAR列。您需要將該值轉換爲數字類型。你使用什麼數據庫和版本? –
你在列中有小數還是隻有整數? – gbn
不,我有.xx小數 – Henrikh