【发布时间】:2020-06-14 12:23:59
【问题描述】:
我正在尝试用正则表达式替换换行符。我有两个数据库 Oralce 和 MySQL。 SQL 语句在 MySQL 上运行良好,但在 Oralce 上不行。
这是我的示例文本:
<ul>
<li>Was soll erreicht worden sein, wenn man das Projekt durchgeführt hat?</li>
</ul>
Formulieren Sie immer konkret.
<ul>
<li><strong><span style=\"color: #800000;\">Wirtschaftliche Ziele</span></strong> (z. B.: Umsatzsteigerung im betroffenen Produktbereich: 20% im 3. Quartal des ersten Geschäftsjahres)</li>
</ul>
<ul>
<li>Test</li>
</ul>
目标是在每个</li></ul> 之后放置一个</ul><br/>,其中后面的字符是换行符,而不是我的字符<。
在 MySQL 中的工作解决方案:
SELECT *,
REGEXP_REPLACE(DeInfo, '(<\/ul>)(\r?\n)(?=[^<])', '</ul><br/>') as newDeInfo,
DeInfo
FROM txttrans
Oralce 语句无效:
SELECT id, deinfo, FIRMID,
REGEXP_REPLACE(DeInfo, '(<\/ul>)(\r ? \n)(?=[^<])', '</ul><br/>', 1, 0, 'i') as TEST
FROM txttrans
【问题讨论】:
-
Oracle 不支持前瞻,您提到了 posix,但您实际上并未使用 posix character classes(您使用的是 PERL 样式字符类)
-
断言不是POSIX。 Oracle 支持的语法是in the documentation。
标签: sql regex oracle posix regexp-replace