SQLite сортировка по цене не работает - PullRequest
1 голос
/ 21 августа 2009

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

Ответы [ 2 ]

5 голосов
/ 21 августа 2009

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

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

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

2 голосов
/ 21 августа 2009

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

...