我使用Google cloud mysql v.5.5进行基于Java的开发。
我正在尝试按价格生成数据,但直到现在,价格还没有被订购。
让我说我的疑问是:
SELECT ID, ITEM_NAME, PRICE FROM REFERENCES .... ORDER BY PRICE ASC
表引用有4个元素。这些要素的价格是:1,12,12.2和2.
当我运行查询时,我得到的是:
1
12
12.2
2
我应该得到:
1
2
12
12.2
知道会发生什么吗?
提前感谢您的时间,
亲切的问候,
UPDATE1:PRICE列的字段类型是VARCHAR作为客户端先决条件,所以没什么可做的。
UPDATE2:价格值包含','而不是通常的'。' ,即使我已经得到的反应,直到现在结果仍然不那么凌乱,但反正凌乱。 :(
UPDATE3:另外,我尝试过以下操作:ORDER BY替换(PRICE,',','')+ 0 ASC,但事实证明这也是不成功的。 :(
答案 0 :(得分:2)
听起来price
被存储为字符串而不是数字。
您可以尝试:
order by price + 0
这会将其转换为数字。
答案 1 :(得分:2)
试试这个:
SELECT ID, ITEM_NAME, PRICE FROM REFERENCES ....
ORDER BY cast(PRICE as unsigned) ASC
答案 2 :(得分:0)
我打赌价格列不是数字而是字母数字。在这种情况下,排序顺序是字母数字,所以你得到
1
12个
12.2
2
因为1 < 2
和12 < 12.2
。
答案 3 :(得分:0)
SELECT ID,ITEM_NAME,来自参考的价格....按价格购买ASC
或者只是
SELECT ID,ITEM_NAME,来自参考的价格....按价格订购
输出 - 1 2 12 12.2