gpt4 book ai didi

sql - 使用 REGEXP_REPLACE 替换开始字符串和结束字符串(包括特殊字符)之间的任何内容

转载 作者:行者123 更新时间:2023-12-04 10:29:10 25 4
gpt4 key购买 nike

update customer set cust_info= REGEXP_REPLACE(cust_info,'<start><cust_name><start><cust_name><this field has long string><end>','') where user_id=123;
ORA-12733: 正则表达式太长

所以我尝试使用 REGEXP_REPLACE(cust_info,'<start>[A-Z0-9_](*.?)<end>','');但没有用。

我想替换 <start> 之间的任何内容字符串和 <end>字符串为空。
(即删除 <start><end> 之间的任何内容)。

PS:- cust_info 列包含带有 html 标签的长字符串。

最佳答案

你的正则表达式似乎不行试试表达式 <start>(.)*?<end>

WITH da AS ( 
SELECT '<start><cust_name><start><cust_name><this field has long string><end>' AS cust_info FROM dual UNION ALL
SELECT 'name_test' AS cust_info FROM dual
) SELECT REGEXP_REPLACE(cust_info,'<start>(.)*?<end>','') FROM da;

尝试
UPDATE
customer
SET
cust_info = REGEXP_REPLACE(cust_info, '<start>(.)*?<end>', '')
WHERE
user_id = 123;

解释:-
<start> //Matches literal <start>
(.) //Matches any character except linebreaks
* //Matches 0 or more of the preceding token of (.)
? //Makes the preceding quantifier lazy, causing it to match as few characters as possible
<end> //Matches literal <end>

如果您的字符串有换行符,请使用 match_parameter 将其考虑在内
REGEXP_REPLACE ( cust_info, '<start>(.*?)*?<end>' , '' , 1 , 1 , 'n'   ) 

基于:
REGEXP_REPLACE ( source_string, search_pattern
[, replacement_string
[, star_position
[, nth_occurrence
[, match_parameter ]
]
]
]
)

所以:
UPDATE
customer
SET
cust_info = REGEXP_REPLACE ( ID_DESC, '<start>(.*?)*?<end>' , '' , 1 , 1 , 'n' )
WHERE
user_id = 123;

关于sql - 使用 REGEXP_REPLACE 替换开始字符串和结束字符串(包括特殊字符)之间的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60488900/

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