gpt4 book ai didi

sql - 新线路没有被淘汰

转载 作者:行者123 更新时间:2023-12-04 08:03:00 24 4
gpt4 key购买 nike

我正在尝试使用 regexp_replace 替换换行符等类型的值。但是当我在查询结果窗口中打开结果时,我仍然可以看到文本中的新行。即使我复制结果,我也可以看到换行符。例如,查看输出,我只是从结果中复制。
下面是我的查询

select regexp_replace('abc123     

/n
CHAR(10)

头疼,'||CHR(10)||'allo','[^[:alpha:][:digit:][ \t]]','') from dual;
/我只是用来测试字符。
输出:
abc123     

/n
CHAR(10)

头疼,
allo
如何从文本中删除新行?
预期输出:
abc123     /nCHAR(10)头疼,allo

最佳答案

您的代码中有两个错误。其中之一会导致您注意到的问题。
首先,在括号表达式中,在 Oracle 正则表达式(遵循 POSIX 标准)中,没有转义序列。您的意思可能是 \t作为制表符的转义序列 - 在括号表达式中。 (还要注意,在 Oracle 正则表达式中,无论如何都没有像 \t\n 这样的转义序列。如果您必须保留制表符,可以这样做,但不是那样。)
其次,不管这个,你包括两个字符类,[:alpha:][:digit:] ,还有 [ \t]在(否定的)括号表达式中。最后一个不是字符类,所以 [除了空格,反斜杠和字母 t 被解释为文字字符 - 它们代表自己。另一方面,右括号具有特殊含义。 第一 你的两个右括号被解释为括号表达式的结尾;和 第二个右括号被解释为必须匹配的附加文字字符!由于字符串中的任何地方都没有这样的文字右括号,因此没有替换任何内容。
要修复这两个错误,请替换 [ \t][:blank:]字符类,完全由空格和制表符组成。 (并且,请注意 [:alpha:][:digit:] 可以更紧凑地写为 [:alnum:] 。)

关于sql - 新线路没有被淘汰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66356417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com