2009-08-21 2 views
1

У меня есть столбец, называемый ценой, и все значения TEXT выглядят так: «$ 26.71». Я хочу отсортировать этот столбец в порядке убывания, но я не могу, потому что столбец не определен как INTEGER, и перед всеми значениями он имеет символ «$». Что я должен сделать, чтобы сделать эту работу? Спасибо.SQLite сортировка по цене не работает

ответ

5

Вы можете комбинировать ltrim и cast, чтобы получить фактический числовой, из которого сортировать по:

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

Примечание, ltrim также работает, если у вас есть несколько валют. Просто выровняйте их все, как '$€'. ltrim удаляет все и все символы с левой стороны, пока не попадет на символ, который не находится в этой строке.

2

Mehmet, В идеале вы должны хранить цены в виде типа валюты/десятичной/числовой цифры и добавлять «$» в пользовательский интерфейс. Решение Eric будет работать для вашей непосредственной проблемы, но по мере роста вашей системы производительность этих выборок будет все хуже и хуже.

Смежные вопросы