我正在尝试使用case语句在数据为null或值为99时返回一个值。oracle可以吗?下面是我的代码不起作用,因为null和null引发错误。当值是NULL或99时,如何使sql语句返回Y;而当值是其他值时,如何返回N?
SELECT CASE StudentStatus
WHEN '99' THEN 'Y'
WHEN IS NULL THEN 'Y'
ELSE 'N'
END From USERS
感谢您的帮助!
答案 0 :(得分:3)
以另一种方式进行操作,让您的case
表达式检查StudentStatus <>'99'的时间:
SELECT CASE when StudentStatus <> '99' then 'N'
ELSE 'Y'
END
From USERS
答案 1 :(得分:1)
SELECT CASE
WHEN StudentStatus = '99' THEN 'Y'
WHEN StudentStatus IS NULL THEN 'Y'
ELSE 'N'
END
From USERS
OR
SELECT CASE
WHEN StudentStatus = '99' OR StudentStatus IS NULL
THEN 'Y'
ELSE 'N'
END
From USERS
答案 2 :(得分:1)
您可以使用DECODE
重写它:
SELECT DECODE(StudentStatus, '99', 'Y', '', 'Y', 'N')
FROM Users
输出:
+----------------+-------------------------------------------+
| STUDENTSTATUS | DECODE(STUDENTSTATUS,'99','Y','','Y','N') |
+----------------+-------------------------------------------+
| 99 | Y |
| | Y |
| 100 | N |
+----------------+-------------------------------------------+
答案 3 :(得分:1)
答案 4 :(得分:0)
尝试使用
SELECT CASE WHEN ( StudentStatus = '99' OR StudentStatus IS NULL ) THEN 'Y'
ELSE 'N' END
From USERS