簡體   English   中英

如果在MySQL中包含數字和文本,如何按字段排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM