CASE 使用 CASE 语句检查 Null 或 Empty 值
CASE Using CASE Statements to check for Null or Empty value
我需要编写一个数据库函数来连接 4 个值。这些值可以为空或 null。如何仅连接非空或非空的值?
伪代码
CASE
WHEN #p1 IS NULL THEN
''
ELSE
#p1
END ||
CASE
WHEN #p2 IS NULL THEN
''
ELSE
#p2
END ||
CASE
WHEN #p3 IS NULL THEN
''
ELSE
#p3
END ||
CASE
WHEN #p4 IS NULL THEN
''
ELSE
#p4
END
## End
ANSI SQL:
coalesce(#p1,'') || coalesce(#p2,'') || coalesce(#p3,'') || coalesce(#p4,'')
您要用空字符串替换 null 吗?在 Oracle 中,null 和空字符串是一回事。您不需要根据 null 做出任何决定。
所以,您可以:
expr:= p1||p2||p3||p4;
例如如果
p1 = 'a';
p2 is null;
p3 = 'b';
p4 is null;
expr p1||p2||p3||p4
将是 'ab'
.
How can i check for null or empty values for all the four parameters and then concatenate based on what is not null.
如果您只需要连接 NOT NULL 值,那么只需 连接 它们即可。因为 NULL 值无论如何都会被忽略。
#p1||#p2||#p3||#p4
例如,
SQL> WITH t(A, b, c, d) AS(
2 SELECT 'x', NULL, 'y', NULL FROM dual UNION ALL
3 SELECT 'x', '', NULL, 'z' FROM dual UNION ALL
4 SELECT NULL, NULL, 'x', NULL FROM dual
5 )
6 SELECT a||b||c||d stra FROM t;
STR
---
xy
xz
x
SQL>
我需要编写一个数据库函数来连接 4 个值。这些值可以为空或 null。如何仅连接非空或非空的值?
伪代码
CASE
WHEN #p1 IS NULL THEN
''
ELSE
#p1
END ||
CASE
WHEN #p2 IS NULL THEN
''
ELSE
#p2
END ||
CASE
WHEN #p3 IS NULL THEN
''
ELSE
#p3
END ||
CASE
WHEN #p4 IS NULL THEN
''
ELSE
#p4
END
## End
ANSI SQL:
coalesce(#p1,'') || coalesce(#p2,'') || coalesce(#p3,'') || coalesce(#p4,'')
您要用空字符串替换 null 吗?在 Oracle 中,null 和空字符串是一回事。您不需要根据 null 做出任何决定。
所以,您可以:
expr:= p1||p2||p3||p4;
例如如果
p1 = 'a';
p2 is null;
p3 = 'b';
p4 is null;
expr p1||p2||p3||p4
将是 'ab'
.
How can i check for null or empty values for all the four parameters and then concatenate based on what is not null.
如果您只需要连接 NOT NULL 值,那么只需 连接 它们即可。因为 NULL 值无论如何都会被忽略。
#p1||#p2||#p3||#p4
例如,
SQL> WITH t(A, b, c, d) AS(
2 SELECT 'x', NULL, 'y', NULL FROM dual UNION ALL
3 SELECT 'x', '', NULL, 'z' FROM dual UNION ALL
4 SELECT NULL, NULL, 'x', NULL FROM dual
5 )
6 SELECT a||b||c||d stra FROM t;
STR
---
xy
xz
x
SQL>