【发布时间】:2021-12-29 15:17:46
【问题描述】:
我有一个简单的问题我找不到答案:
这是:
regexp_replace(somecolumn, someregex)
和下面一样吗?
regexp_replace(somecolumn, someregex, NULL)
【问题讨论】:
-
好问题。通常,Oracle 文档看起来像是由白痴编写的。恰当的例子 -
regexp_replace的语法图显示replace_string参数是可选的,但在任何地方都没有说明如果该参数被遗漏的行为是什么。您的猜测是 100% 正确的,但您不必猜测,这在文档中应该非常清楚。 -
我同意哈哈,我问这个问题是因为我正在运行我在 oracle 项目中的一些查询,在 hsql 数据库中,并且一些 oracle 查询不起作用。我注意到 regexp_replace(somecolumn, someregex, NULL) 在 hsqldb 上不起作用,但 regexp_replace(somecolumn, someregex) 确实有效,因此我提出了问题。
-
如果您改用空字符串,hsql 中的查询(不管是什么)会起作用吗? Oracle - 直接违反 SQL 标准 - 将空字符串视为 null;如果事情做得正确,您在“替换”中真正想要的是用空字符串替换(而不是用“未知值”替换,这或多或少是 null)。
-
是的,它适用于空字符串!谢谢你的解释!
标签: sql oracle oracle11g regexp-replace