2013-12-17 7 views
0

Я использую Google cloud mysql v.5.5 для разработки на основе Java.Java Mysql Сортировать по цене

Я пытаюсь заказать результирующие данные по цене, но до сих пор, цены arent заказываются.

Допустим, мой запрос:

SELECT ID, ITEM_NAME, PRICE FROM REFERENCES .... ORDER BY PRICE ASC 

Таблица Список литературы состоит из 4 элементов. Цены на эти элементы являются: 1, 12, 12,2 и 2.

Когда я выполнить запрос, что я получаю:

1 
12 
12.2 
2 

И я должен получать:

1 
2 
12 
12.2 

Любая идея, что может произойти?

Заранее спасибо за ваше время,

Уважения,

Update1: Тип поля для столбца ЦЕНЫ является VARCHAR в качестве клиента Prereq, поэтому не так много, чтобы делать это.

UPDATE2: Ценовое значение содержит ',' вместо обычного '.' , так что даже с ответами, которые я получил до сих пор, результаты остаются менее беспорядочными, но беспорядочными. :(

Update3: Кроме того, я попытался сделать следующее: ORDER BY заменить (ЦЕНА, '', '') +0 ASC, но это также оказалось неудачным :(

+0

Вы должны хранить цены как 'DECIMAL', а не' VARCHAR' или все, что у вас есть. В противном случае это самая маленькая проблема, с которой вы можете столкнуться. –

+0

Сохраняя их как VARCHAR, это скорее требование клиента, чем моя собственная идея. И теперь я столкнулся с этой проблемой. :( – Catersa

+0

Остерегайтесь такого требования: рано или поздно вы найдете строку с «Ask Jim» как ценность. Приходите на цифру, когда вам нужно применять налоги или подсчитывать итоговые значения корзины ... Но я думаю, это может быть хуже: клиент может потребоваться использование отсканированных изображений на этикетках продуктов. –

ответ

0

я. ставку в колонке цена не является числовым значением, но алфавитно-цифровой. В этом случае порядок сортировки является буквенно-цифровым, так что вы получите

12,2

т.к. 1 < 2 и 12 < 12.2.

2

Похоже, что price хранится как строка, а не число.

Вы можете попробовать:

order by price + 0 

Это будет преобразовать его в число.

2

Попробуйте это:

SELECT ID, ITEM_NAME, PRICE FROM REFERENCES .... 
ORDER BY cast(PRICE as unsigned) ASC 
0
  • Первое, что нужно знать, что .. Google Cloud SQL поддерживает и использует все возможности MySQL 5.5.
  • MYSQL сортирует результаты запроса по возрастанию ORDER BY по умолчанию.
  • Вам необходимо сделать ЦЕНА столбец FLOAT.

ВЫБРАТЬ ID, ITEM_NAME, ЦЕНА ОТ ЛИТЕРАТУРЫ .... ORDER BY ЦЕНА ASC

Или просто

ВЫБРАТЬ ID, ITEM_NAME, ЦЕНА ОТ ЛИТЕРАТУРЫ .... Сортировать по цене

И output- 12.2

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