1

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

4

2 回答 2

5

您可以组合ltrimcast获得一个实际的数字,从中进行排序:

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

请注意,ltrim如果您有多种货币,也可以使用。把它们都排好,就像'$€'. ltrim从左侧删除所有字符,直到遇到不在该字符串中的字符。

于 2009-08-21T11:38:27.357 回答
2

Mehmet,理想情况下,您应该将价格存储为货币/十进制/数字数据类型,并在 UI 上附加“$”。Eric 的解决方案可以解决您眼前的问题,但是随着系统的增长,这些选择的性能会越来越差。

于 2009-08-21T12:13:04.450 回答