当varchar类似于“10.90 EUR”时,将varchar排序为int

时间:2012-06-27 07:01:28

标签: mysql sorting int varchar

我的表格中包含diplayPrice字段varchar。该字段填充了10.90 EUR3.90 EUR119.00 EUR等等。

我该如何排序?

我尝试了几件事,例如:

Select * From produkte ORDER BY length('DisplayPrice') 

Select * From produkte ORDER BY CAST(`DisplayPrice` AS SIGNED)

提前致谢。

3 个答案:

答案 0 :(得分:0)

尝试此查询 -

SELECT * FROM produkte ORDER BY DisplayPrice * 1

将DisplayPrice转换为数字值会有所帮助。

答案 1 :(得分:0)

您可以使用 substring 来获取仅包含数字和排序的部分。 这是未经测试的。

select *,substring_index(displayPrice,' ',1) as displayPriceVal ...... order by displayPriceVal

答案 2 :(得分:0)

或者只是将其转换为十进制,以便您轻松订购。

SELECT *  
FROM produkte  
ORDER by Cast(LEFT(DisplayPrice,LENGTH(DisplayPrice)-4) as dec(10,2))

但你需要在这里削减货币。我建议你在另一栏中找到这个更灵活的方法(即排序;))