SQLite按价格排序不起作用

时间:2009-08-21 11:35:46

标签: sqlite text sorting character

我有一个名为price的列,所有值都是TEXT,如下所示:“$ 26.71”。 我想按降序对此列进行排序,但我不能,因为该列未定义为INTEGER,并且在所有值前面都有一个“$”字符。 我该怎么做才能使这项工作? 感谢。

2 个答案:

答案 0 :(得分:5)

您可以合并ltrimcast以获取要排序的实际数字:

select * from table order by cast(ltrim(price, '$') as numeric) desc

注意,如果您有多种货币,ltrim也可以。只需将它们排成一行,如'$€'ltrim从左侧删除任何和所有字符,直到它击中不在该字符串中的字符。

答案 1 :(得分:2)

穆罕默德,理想情况下,您应该将价格存储为货币/小数/数字数据类型,并在UI上附加“$”。 Eric的解决方案可以解决您的问题,但随着系统的发展,这些选择的性能会越来越差。