我正在尝试从存储为unsigned tinyint的数据库中选择数字 但在输出上我需要它们是消极的。
这就是我的所作所为:
SELECT
-CAST(sales_shipments_items.qty AS SIGNED INTEGER) AS qty,
FROM sales_shipments_items
WHERE 1
&安培;这适用于我的本地机器与mysql 5.5.25 但是使用mysql 5.5.32-cll-lve
在服务器上返回0 顺便说一句,在我的本地机器上,我甚至不需要使用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
答案 0 :(得分:4)
为什么会使它复杂化?你可以这样做:
SELECT (0 - qty) AS qty
FROM sales_shipments_items
<强> Fiddle 强>
由于Jungsu注意到当您的字段为UNSIGNED
时这不起作用,在这种情况下您可以运行此查询:
SELECT qty/-1 AS qty
FROM sales_shipments_items
答案 1 :(得分:0)
这始终有效。 (MYSQL 5.6
)
SELECT -1 * CAST(qty as SIGNED) as qty
FROM sales_shipments_items