首页 > 解决方案 > Oracle 在为空或空时选择许多列

问题描述

当一个或多个列为空时,我试图从表中获取用户

我的意思是,像这样

SELECT ID_USER,
    CASE
        WHEN NAME IS NULL
          THEN 'HAS NO NAME'
        WHEN SECON_NAME IS NULL
          THEN 'HAS NO SECOND'
        WHEN USER_NUM IS NULL
          THEN 'HAS NO NUM'
    END AS STATUS
FROM USER

这可能吗?还是有另一种方法来获得它?

到目前为止,我只能得到 second_name 列

在此处输入图像描述

标签: sqloracleselectcasecase-when

解决方案


CASE 表达式在第一个计算结果为 TRUE 的表达式之后退出。所以即使你有多个条件,你也只会得到其中一个。

为了获取具有 NULL 名称、NULL 第二个名称或 NULL num 的用户,您可以运行以下查询:

SELECT ID_USER 
FROM USER
WHERE 
NAME IS NULL 
OR SECON_NAME IS NULL
OR USER_NUM IS NULL

如果您想查看它们被退回的原因,您可以使用

    SELECT ID_USER,
 CASE WHEN NAME IS NULL THEN 'HAS NO NAME ' else '' end
|| CASE WHEN SECON_NAME IS NULL THEN 'HAS NO SECOND ' else '' end
|| CASE WHEN USER_NUM IS NULL THEN 'HAS NO NUM' else '' end 
as STATUS
    FROM USER
    WHERE 
    NAME IS NULL 
    OR SECON_NAME IS NULL
    OR USER_NUM IS NULL

推荐阅读