[英]mysql how to order by user defined order/sort by number of items on a field
[英]How to order by field if it contains number and text in mysql
我有address的數據。我想將address字段排序為asc和desc順序。
您可以在表格中看到2個字段ID,地址
如果我將地址字段訂購到desc.It必須按以下順序輸入
(1)5621 EMERSON CT
(2)5600艾默生苑
(3)5393 Conestoga Dr.
但是您可以在圖像中看到。 它無法正常工作。 地址字段是varchar(255)。 誰能告訴我解決這個問題我應該做什么? 任何幫助將不勝感激。
SELECT * FROM `address` ORDER BY cast(`address` AS SIGNED) ASC
在上面的腳本中,將等級地址欄鍵入int
。 因此,如果您的欄具有這樣的值,則意味着1234 street
。 Mysql將其解析為字符,因此我們強制mysql使用數據類型為int的數據類型轉換函數cast
其解析為int。 所以現在mysql看到它是1234
而不是1234 street
。
但是,如果address
列具有這樣的值,則意味着junk 1234
現在mysql通過標識該值以非數字字符開頭將其解釋為0
。 因此,如果以數字開頭,則可以使用,但不能使用其他數字。
由於此“地址”是字符串(varchar字段),因此按詞法進行排序。 因此,您可以通過以下方式訂購
SELECT `address` FROM 'table` ORDER BY convert(`address`, decimal) DESC;
這樣可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.