我有个小问题。如何将mysql查询中的空值从null替换为我需要的值?
Ifnull,coleasce,with case,with if?我不能让它工作。
示例在
sqlfiddle
第一和第二行:第三列:所有产品的总和,第四列:活动产品,第五列:非活动产品。
第三行和第四行:第三列:所有产品的总和,第四列:活动产品,第五列:非活动产品(
空值=>需要0值
)。
第五和第六行:第三列:所有产品的总和,第四列:活动产品(
空值=>需要0值
),第五列:非活动产品(
空值=>需要第三列中的值
)。
如果我得到非活动产品的空值,我需要将其替换为0,
但是,当我在活动产品中获得空值时,我需要将其替换为0,而在非活动列中,我需要将空值替换为第三列中的值。
没有UPDATE或INSERT函数,因为这是一个mysql视图,我不需要更新或插入任何东西
thx,向前
ps。基本上我需要的是:
如果为active<>0和inactive<>0,则“无值更改”
如果为active<>0和inactive=null,则不活动=0
如果为active=null,则为active=0和非活动产品
_
总和
发布于 2016-04-22 00:35:27
我们可以使用
表达式
属性中的列名的位置。
列表。
如果我们希望SQL是可移植的并且符合ANSI标准,我们可以使用
表达式。例如:
SELECT CASE WHEN t.inactive_product IS NULL
THEN t.product_sum
ELSE t.inactive_product
END AS inactive_product
FROM ... t可以(更简明地)使用
功能:
SELECT COALESCE(t.inactive_product,t.product_sum) AS inactive_product
, COALESCE(t.active_product,0) AS active_product
FROM ... t大多数数据库,包括MySQL,都提供了扩展SQL标准的函数。
同样的结果也可以在MySQL中实现,使用方便
函数。
SELECT IFNULL(t.inactive_product,t.product_sum) AS inactive_product
, IFNULL(t.active_product,0) AS active_product
FROM ... t后续内容:
在我看来,以下条件在数据中往往是真的,或者至少在我们想要返回的结果中是真的:
product_sum = active_product + inactive_product我会这样做:
SELECT ...
, t.product_sum
, IFNULL(t.active_product,0) AS active_product
, IFNULL(t.inactive_product,t.product_sum-IFNULL(t.active_product,0))
AS inactive_product
FROM ... thttps://stackoverflow.com/questions/36775438
复制相似问题