2013-11-19 7 views
0

Я пытаюсь выбрать числа из базы данных, хранящейся как unsigned tinyint Но на выходе мне нужно, чтобы они были отрицательными.CAST unsigned to signed int in MySql

Это то, что я делаю:

SELECT 
-CAST(sales_shipments_items.qty AS SIGNED INTEGER) AS qty, 
FROM sales_shipments_items 
WHERE 1 

& это работает на моей локальной машине с MySQL 5.5.25 Но возвращает 0 на сервере с MySQL 5.5.32-ХЛЛ-LVE

BTW , на моей локальной машине мне даже не нужно использовать CAST, без нее.

Я пытался использовать CONVERT вместо CAST, но до сих пор получить только

Примеры данных 0 в sales_shipments_items

id|type|shp_num|qty 
3 1 3321 2 

4 1 3322 2 

5 2 3321 2 

6 3 3320 1 

7 4 3350 1 

8 5 3351 3 

Я ожидал увидеть:

-2 
-2 
-2 
-1 
-1 
-3 

ответ

2

Почему усложнять? Вы можете просто сделать:

SELECT (0 - qty) AS qty 
FROM sales_shipments_items 

Fiddle

Как Jungsu заметил это не работает, когда ваше поле UNSIGNED, в этом случае вы можете запустить этот запрос:

SELECT qty/-1 AS qty 
FROM sales_shipments_items 
+0

Поставляется с Значение BIGINT UNSIGNED находится за пределами допустимого диапазона в '(0 - 'krumaneq_ordering'.'sales_shipments_items'''qty')' – AnKing

+0

Можете добавить несколько примеров данных к вашему вопросу? ожидаемый результат? –

+0

Он просто не работает на сервере. Нет проблем с локальным выходом. Это ошибка mysql в этой конкретной версии, и я должен сообщить об этом хостеру? – AnKing