【发布时间】:2021-04-22 08:48:29
【问题描述】:
我正在尝试从我的数据库中的 CLOB 字段中查找子字符串。
考虑以下字符串:
someothertext 2. Grad Dekubitus (Druckgeschwür) mit Abschürfung/Blase/Hautverlust someothertext
我只想从字符串中提取 "2.Grad",但我的正则表达式似乎不起作用 - 我在一些在线正则表达式检查器中对字符串进行了测试,结果确实如此实际工作(Fiddle)
这是我的正则表达式:
REGEXP_SUBSTR(DBMS_LOB.SUBSTR(cf.TEXT, 4000), '\b[0-9]\.\sGrad$') AS "Grad"
目前,它返回 NULL,但我不知道为什么。
关于如何让它发挥作用的任何想法?
【问题讨论】:
-
尝试不使用锚
$ -
Oracel 正则表达式不支持单词边界。
[0-9]\.\sGrad将工作。或者,(^|\D)([0-9]\.\sGrad),如果您需要确保[0-9]之前没有数字。 -
根据documentation
REGEXP_SUBSTR也适用于CLOB,即您不必转换为VARCHAR2 -
@WernfriedDomscheit 对我来说它不起作用,如果我不转换它,我会收到以下错误:ORA-00932:不一致的数据类型:预期 - 得到 CLOB
-
好吧,没关系。也许是文档错误。或者你有一个旧的 Oracle。