我需要像这样分开一根绳子
RANDOM(NUL)THIS_SHOULD_BE_SPLIT(NUL)~THIS_IS_NEW(NUL)STRING(NUL)~THIS_IS_ANOTHER_STRING(NUL)
``` `(NUL)` 表示具有ascii值的字符 `0` . 我不知道怎么在这里打。
我需要把这个分开 `(NUL)~` 发生。
所以拆分后的预期结果是 `RANDOM(NUL)THIS_SHOULD_BE_SPLIT` THIS_IS_NEW(NUL)STRING `THIS_IS_ANOTHER_STRING(NUL)` 使用oracledb不确定它如何处理空字符以及是否可以拆分它。
使用~我正在使用~
SELECT REGEXP_SUBSTR(stringval,'[^~]+', 1, LEVEL) AS error_code
FROM DUAL
CONNECT BY REGEXP_SUBSTR(stringval, '[^~]+',1,LEVEL) IS NOT NULL;
不知道如何在这里合并空字符。
2条答案
按热度按时间woobm2wo1#
不能直接匹配
ASCII 0 (NUL)
作为正则表达式解析器将处理ASCII 0 (NULL)
字符作为字符串终止符并结束正则表达式模式,而不是将其用作要匹配的字符。因此,如果要使用正则表达式,则需要替换ASCII 0 (NUL)
字符,然后在拆分时匹配该字符,然后还原ASCII 0 (NUL)
后来没有分开的字符。但是您需要确保占位符永远不会出现在字符串的其他地方。相反,你可以使用
CHR(0)
匹配NUL
性格。此方法使用简单的字符串函数(而不是不能直接处理的慢速正则表达式)ASCII 0 (NUL)
字符),并可以处理多个输入行:输出:
(注:以下为
NUL
字符再次被替换为(NUL)
输出为db的字符串(fiddle不喜欢显示该字符。)db<>在这里摆弄
pw136qt22#
这样的东西对你合适吗:
这是一个演示