Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个名为 price 的列,所有值都是 TEXT,如下所示:“$26.71”。我想按降序对该列进行排序,但我不能,因为该列未定义为 INTEGER,并且它在所有值前面都有一个“$”字符。我应该怎么做才能完成这项工作?谢谢。
您可以组合ltrim并cast获得一个实际的数字,从中进行排序:
ltrim
cast
select * from table order by cast(ltrim(price, '$') as numeric) desc
请注意,ltrim如果您有多种货币,也可以使用。把它们都排好,就像'$€'. ltrim从左侧删除所有字符,直到遇到不在该字符串中的字符。
'$€'
Mehmet,理想情况下,您应该将价格存储为货币/十进制/数字数据类型,并在 UI 上附加“$”。Eric 的解决方案可以解决您眼前的问题,但是随着系统的增长,这些选择的性能会越来越差。