如何在SQL中为Wealth_CFY表添加带条件的计算列?
用CASE表达式实现带条件的计算列
嗨,刚好可以用SQL的CASE表达式来实现你要的逻辑,它能帮你在计算列里加入条件判断分支。直接修改你现有的语句就行:
ALTER TABLE Wealth_CFY ADD Type3 AS ( CASE WHEN Type1 <> Type2 THEN Type1 + ' ' + Type2 ELSE Type1 END )
逻辑拆解:
CASE是SQL里的条件判断工具,类似编程语言里的if-else结构- 当
Type1和Type2的值不相等时,执行Type1 + ' ' + Type2,把两列值用空格拼接起来作为Type3的值 - 当两者值相等时,直接返回
Type1的值(和Type2完全一致,选哪个都没问题)
额外注意:处理NULL值
如果Type1或Type2可能存在NULL的情况,上面的判断会有问题(因为NULL和任何值比较结果都是未知),这时候可以用ISNULL或者COALESCE来处理,把NULL转换成空字符串再判断:
ALTER TABLE Wealth_CFY ADD Type3 AS ( CASE WHEN ISNULL(Type1, '') <> ISNULL(Type2, '') THEN ISNULL(Type1, '') + ' ' + ISNULL(Type2, '') ELSE ISNULL(Type1, '') END )
这样就算其中一列是NULL,也能正常判断和拼接啦~
内容的提问来源于stack exchange,提问作者sagar
相关产品推荐
相关产品推荐

