我在表的INT类型列上使用了SQL CASE语句。 以下是SQL表架构和查询,它正常工作。
SQL查询
CREATE TABLE #TEMP_A(ID BIGINT ,ACCEPTED INT)
INSERT INTO #TEMP_A VALUES(1,1)
INSERT INTO #TEMP_A(ID) VALUES(2)
INSERT INTO #TEMP_A(ID) VALUES(3)
INSERT INTO #TEMP_A(ID) VALUES(4)
INSERT INTO #TEMP_A VALUES(5,1)
SELECT T.ID,T.ACCEPTED,
(CASE WHEN(T.ACCEPTED=1) THEN 'ACCEPTED' ELSE 'NOT ACCEPTED' END) AS STATUS
FROM #TEMP_A T
查询输出
ID ACCEPTED STATUS
1 1 ACCEPTED
2 NULL NOT ACCEPTED
3 NULL NOT ACCEPTED
4 NULL NOT ACCEPTED
5 1 ACCEPTED
但现在问题在于我有一个条件,我需要在select语句中打印不接受所以我尝试了以下查询
SQL查询
SELECT T.ID,T.ACCEPTED,
(CASE WHEN(T.ACCEPTED=NULL) THEN 'NOT ACCEPTED' END) AS STATUS
FROM #TEMP_A T
查询实际输出
ID ACCEPTED STATUS
1 1 NULL
2 NULL NULL
3 NULL NULL
4 NULL NULL
5 1 NULL
查询所需的输出
ID ACCEPTED STATUS
1 1 NULL
2 NULL NOT ACCEPTED
3 NULL NOT ACCEPTED
4 NULL NOT ACCEPTED
5 1 NULL
我必须打印select语句中不接受的状态 我该怎么做才能得到所需的结果。
答案 0 :(得分:3)
使用IS NULL
检查NULL
值。试试这个问题:
SELECT T.ID,T.ACCEPTED,
(CASE WHEN (T.ACCEPTED IS NULL) THEN 'NOT ACCEPTED' END) AS STATUS
FROM #TEMP_A T
答案 1 :(得分:2)
尝试使用NULL
来检查它是否为SELECT T.ID,T.ACCEPTED,
(CASE WHEN(T.ACCEPTED IS NULL) THEN 'NOT ACCEPTED' END) AS STATUS
FROM #TEMP_A T
twitter-button
答案 2 :(得分:2)
尝试:
SELECT T.ID,T.ACCEPTED,
(CASE WHEN T.ACCEPTED IS NULL THEN 'NOT ACCEPTED' END) AS STATUS
FROM #TEMP_A T
答案 3 :(得分:0)
为了区别..
SELECT
T.ID
, T.ACCEPTED,
, ISNULL(
CASE
WHEN T.ACCEPTED = 1
THEN 'ACCEPTED' ELSE NULL
END
, 'NOT ACCEPTED') AS STATUS
FROM #TEMP_A T
答案 4 :(得分:0)
或者做这样的事情:),因为你使用的是SQL Server,为什么不使用SQL的ISNULL
内置函数。
SELECT T.ID,T.ACCEPTED,
(CASE WHEN(ISNULL(T.ACCEPTED,'') = '') THEN 'NOT ACCEPTED' END) AS STATUS
FROM #TEMP_A T