基于SQL中的空列插入错误消息列

时间:2017-02-24 13:40:42

标签: sql-server null-check

我在下面创建了一个表格。

CREATE TABLE TEST_NULL
(
ID INT,
NAME VARCHAR(10),
PLACE VARCHAR(10),
ADDRESS VARCHAR(10),
ERRORMESSAGE VARCHAR(100)
)

INSERT INTO TEST_NULL
VALUES
(1, 'ABC', 'BLR', 'WHT', NULL),
(2, 'DEF', 'BLR', NULL, NULL),
(3, 'GHI', NULL, NULL, NULL),
(4, 'JKL', NULL, 'WHT', NULL)

SELECT * FROM TEST_NULL

当我对表格进行选择时,我希望ERRORMESSAGE列的预期结果如下所示。

我需要获得第一条记录:

1, 'ABC', 'BLR', 'WHT', NULL

我需要获得第二条记录:

2, 'DEF', 'BLR', NULL, 'Address is NULL'

我需要获得第3条记录:

3, 'GHI', NULL, NULL, 'Place, Address is NULL'

我需要获得第4条记录:

4, 'JKL', NULL, 'WHT', 'Place is NULL'

感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:2)

我认为使用CASE表达式生成错误消息是最简洁的方法:

SELECT ID, NAME, PLACE, ADDRESS,
       CASE WHEN PLACE IS NULL AND ADDRESS IS NULL THEN 'Place, Address is NULL'
            WHEN PLACE IS NULL                     THEN 'Place is NULL'
            WHEN ADDRESS IS NULL                   THEN 'Address is NULL'
            ELSE NULL END
FROM TEST_NULL

答案 1 :(得分:0)

使用Case子句: -

SELECT ID,NAME,PLACE,ADDRESS, case 

            when
                PLACE is not null and ADDRESS is not null 
            then null 
            when 
                PLACE is null and ADDRESS is not null 
            then 'PLACE is NULL'
            when 
                PLACE is not null and ADDRESS is null 
            then 'ADDRESS is NULL'
            when 
                PLACE is null and ADDRESS is  null 
            then 'PLACE, Address is NULL'
            end as ERRORMESSAGE  

FROM TEST_NULL

<强>结果: -

ID  NAME    PLACE   ADDRESS ERRORMESSAGE
1   ABC     BLR      WHT        NULL
2   DEF     BLR     NULL    ADDRESS is NULL
3   GHI     NULL    NULL    PLACE, Address is NULL
4   JKL    NULL      WHT    PLACE is NULL