我有地址的数据,我想把地址字段订购到asc和desc order。
您可以在表中看到有两个字段id,address
如果我订购地址字段到desc.It,则必须按以下顺序排列
(1)5621埃默生CT
(2)5600爱默生法院
(3)5393 Conestoga博士。
但你可以从图像中看到。它没有正常工作。地址字段为varchar(255)。谁能告诉我,要解决这个问题,我应该做些什么呢?任何帮助都将不胜感激。

发布于 2014-11-03 06:17:38
SELECT * FROM `address` ORDER BY cast(`address` AS SIGNED) ASC在上面的脚本中,将address列种姓为int。因此,如果您的列具有类似的值,则表示1234 street。Mysql将其解析为字符,因此我们强制mysql使用数据类型转换函数cast将其解析为int,数据类型为int。所以现在mysql把它看作是1234而不是1234 street。
但是,如果address列具有类似于此的值,则mysql现在将其解释为0,以标识该值是以非数字字符启动的。因此,如果以数字开头,它是有效的,但对其他人则不起作用。
发布于 2014-11-03 06:27:35
因为这个"address“是一个字符串(varchar字段),所以它得到了词汇上的排序。所以,你也许可以按
SELECT `address` FROM 'table` ORDER BY convert(`address`, decimal) DESC;这将解决问题。
https://stackoverflow.com/questions/26708689
复制相似问题