我不明白当我尝试按十进制排序时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一样
我该如何解决这个问题?
答案 0 :(得分:2)
删除空格
SELECT * FROM `products`
ORDER BY replace(price,' ','') * 1 DESC
但最好将您的专栏更改为INT
!
答案 1 :(得分:1)
答案 2 :(得分:0)
清理用户输入以仅允许整数,即没有空格。你如何做到这一点取决于你的前端。