MySQL以十进制排序,带有空格

时间:2013-12-16 18:30:22

标签: php mysql sql phpmyadmin sql-order-by

我不明白当我尝试按十进制排序时PRICE字段没有空格,一切看起来都很棒。但是当用户在数字之间添加空格时,这些字段会在排序语句中显示在底部。

我的价格字段是varchar也尝试使用整数,并且存在同样的问题。

以下是用户插入时没有空白的示例 23000

SELECT * FROM `products` ORDER BY CAST(price AS DECIMAL) DESC

给了我: 的 23000 20000 13000 10000 5000 等

但是当用户插入这样的价格 23 000 时,3和0之间的空格我就是这样:

SELECT * FROM `products` ORDER BY CAST(price AS DECIMAL) DESC

20000 13000 10000 5000 和23 000一样

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

删除空格

SELECT * FROM `products` 
ORDER BY replace(price,' ','') * 1 DESC

但最好将您的专栏更改为INT

答案 1 :(得分:1)

您可以使用TRIM删除空格

SELECT * FROM `products` ORDER BY TRIM(price) DESC

TRIM()

答案 2 :(得分:0)

清理用户输入以仅允许整数,即没有空格。你如何做到这一点取决于你的前端。