提问人:Manngo 提问时间:5/26/2023 更新时间:5/26/2023 访问量:62
Oracle:与 NULL 连接
Oracle: concatenate with NULL
问:
看来在 Oracle 中,给你,这不是我在其他 DBMS 中的经验。'a'||NULL
a
这意味着像这样的表达式将不起作用,因为第一个表达式是 never .coalesce('id: '||id,'missing')
NULL
我想我可以使用表达式来完成工作,但这开始过分了。CASE … END
我怎样才能让串联返回,或者我应该使用其他一些简单的技巧?NULL
答:
1赞
Paul W
5/26/2023
#1
Oracle 表现出与 NULL 的混合行为。一方面,有几个功能,如、等。如果单个操作数为 。另一方面,像 、 、 这样的聚合在聚合过程中会方便地忽略 NULL。同样,字符串运算符被视为空字符串。实际上,等效于字符串数据类型。我们经常依靠它来将连接的字符串与可选/有条件的、动态生成的加法组合在一起。您不希望电子邮件正文为空,因为您拼接的邮件正文的某些部分恰好是 NULL。GREATEST
LEAST
NULL
NULL
MAX
MIN
SUM
AVG
NULL
''
NULL
就 而言,这里有一些选项:coalesce('id: '||id,'missing')
DECODE(id,NULL,'missing','id: '||id) -- works in SQL only, not in PL/SQL
CASE WHEN (id IS NULL) THEN 'missing' ELSE 'id: '||id END
NVL(NULLIF('id: '||id,'id: '),'missing')
评论
0赞
Manngo
5/26/2023
啊,就是这样。 等效于 for strings。我知道它使某些操作更容易,但我真的认为应该允许这样做。谢谢。''
NULL
NULL
NULL
3赞
Wernfried Domscheit
5/26/2023
或者使用(或者相反,我总是弄错了)。NVL2(id, 'id: '||id, 'missing')
0赞
Paul W
5/26/2023
@Wernfried,那就更好了。比 DECODE 少一个参数
评论
'id: '|| nvl(id,'missing')