繁体   English   中英

我想为SQL Server中的某些情况返回默认值NULL

[英]I want to return a default value as NULL for some condition in SQL Server

我在SQL Server中运行以下SQL查询,当不满足条件时,我需要将默认值返回为'NULL'。 对于某些不符合条件的记录,结果应显示为NULL,但是我得到的空格代替NULL。有人可以帮忙吗?

表中只有几行不符合条件,因此我应该在结果中看到NULL。

SELECT NAME,
CASE 
     WHEN AGE >=18 AND SEX='M' THEN 'Adult Male' 
     WHEN AGE>18 AND SEX='M' 'Non-Adult Male'
     WHEN AGE >=18  AND SEX='F' THEN 'Adult Female'
     WHEN AGE<18 AND TITLE='F' THEN 'Non-Adult Female'
     ELSE NULL
END AS AGE_SEX,
ADDRESS, 
SALARY
FROM PERSONALS;

您的逻辑不正确。 考虑到case语句是级联的,这是一种解决方法,即逻辑选择第一个匹配项:

SELECT NAME,
       (CASE WHEN AGE >= 18 AND SEX = 'M' THEN 'Adult Male'
             WHEN AGE < 18 AND SEX = 'M' THEN 'Non-Adult Male'
             WHEN AGE >= 18 AND SEX = 'F' THEN 'Adult Female'
             WHEN AGE < 18 AND SEX = 'F' THEN 'Non-Adult Female'
        END) AS AGE_SEX

注意: ELSE NULL是多余的,因为在没有条件匹配时CASE返回NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM