Сортировка по цене с типом данных SQL VARCHAR - PullRequest
0 голосов
/ 30 октября 2009

сортирую по цене, смотри:

  SELECT Price 
    FROM re2_listings 
ORDER BY Price asc

Результат:

1.200.000,00
1.500.000,00
200,00
3.000,00

... но правильный путь:

200,00
3.000,00
1.200.000,00
1.500.000,00

Понял? Как это сделать?

Ответы [ 4 ]

3 голосов
/ 30 октября 2009

Очевидно, что VARCHAR - не лучший тип данных для хранения числовых сумм. Если вы должны использовать его, вам нужно CAST столбец цен к соответствующему числовому типу в частях вашего оператора SELECT и ORDER BY или создать представление, содержащее CAST и SELECT из представления.

Тип данных для CAST и синтаксис для CASTing зависят от продукта.

0 голосов
/ 30 октября 2009

MySQL или SQL Server поддерживает:

  SELECT t.price
    FROM (SELECT r.price
                 CAST(r.price AS DECIMAL(15,2)) 'dprice'
            FROM RE2_LISTING r) t
ORDER BY t.dprice

Я привел столбец varchar к соответствующему типу данных и использовал псевдоним dprice, чтобы использовать его для сортировки. Если вы сортируете по возрастанию, вам не нужно указывать ASC, если вы не хотите - это значение по умолчанию.

0 голосов
/ 30 октября 2009

Во-первых, это помогает узнать ваш вариант SQL, чтобы ответить на ваш вопрос.

Если у вас все еще есть возможность управлять схемой, вам гораздо лучше использовать числовой тип данных (например, int или float) для столбца и форматировать его как цену, когда он отображается.

0 голосов
/ 30 октября 2009
$q1 = "select Price from re2_listings order by CAST(Price AS Float)  asc";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...