Regexp_replace Oracle替换字符' n'和' R'而不是更换新线路或空间

发布于 2025-01-24 03:27:37 字数 424 浏览 0 评论 0 原文

SELECT 

COALESCE(TRIM(REGEXP_REPLACE(Col_1, '(<.*?>)|(/(\r\n)+|\r+|\n+|Chr(9)+/i)|(/^\s+|\s+$|\s+(?=\s))', ' ',1,0, 'm')), TRIM(REGEXP_REPLACE(Col2, '(<.*?>)|(/(\r\n)+|\r+|\n+|Chr(9)+/i)|(/^\s+|\s+$|\s+(?=\s))', ' ', 1, 0, 'm'))) AS SNDR_TO_RCVR_INF1

FROM TABLE_NAME.

这取代了Col_1或Col 2的字符“ R”或“ N”,而不是新行。

我想这是因为我在语法中使用了\ r和\ n。

但是,我该怎么办,语法识别 /n而不是n(newline)或 /r而不是r?

SELECT 

COALESCE(TRIM(REGEXP_REPLACE(Col_1, '(<.*?>)|(/(\r\n)+|\r+|\n+|Chr(9)+/i)|(/^\s+|\s+$|\s+(?=\s))', ' ',1,0, 'm')), TRIM(REGEXP_REPLACE(Col2, '(<.*?>)|(/(\r\n)+|\r+|\n+|Chr(9)+/i)|(/^\s+|\s+$|\s+(?=\s))', ' ', 1, 0, 'm'))) AS SNDR_TO_RCVR_INF1

FROM TABLE_NAME.

This replaces the characters 'r' or 'n' from Col_1 or Col 2 instead of new line.

I guess it is because I used \r and \n in the syntax.

But then what should I do so the syntax recognizes /n instead of n (newline) or /r instead of r?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千年*琉璃梦 2025-01-31 03:27:37

您可以在运输返回的字符序列和新行(和TAB)中加入:

'(<.*?>)|(/(' ||chr(13)||chr(10)|| ')+|' ||chr(13)|| '+|' ||chr(10)|| '+|' ||chr(9)|| '+/i)|(/^\s+|\s+$|\s+(?=\s))'

您可能可以进一步简化这一点,但这是一个单独的问题...

You can concatenate in the character sequences for carriage return and new line (and tab) instead:

'(<.*?>)|(/(' ||chr(13)||chr(10)|| ')+|' ||chr(13)|| '+|' ||chr(10)|| '+|' ||chr(9)|| '+/i)|(/^\s+|\s+$|\s+(?=\s))'

db<>fiddle

You can probably simplify that further, but that's a separate issue...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文