SELECT TRIM(
BOTH ',' FROM
REPLACE(','||value||',', ',aaa,', ',')
) AS replaced_value
FROM table_name
其中,对于示例数据:
CREATE TABLE table_name ( value ) AS
SELECT 'aaa' FROM DUAL UNION ALL
SELECT 'aaa,bbb' FROM DUAL UNION ALL
SELECT 'ccc,aaa' FROM DUAL UNION ALL
SELECT 'ddd,aaa,eee' FROM DUAL UNION ALL
SELECT 'fff,aaa,ggg,aaa,hhh' FROM DUAL UNION ALL
SELECT 'aaa,aaa,aaa' FROM DUAL;
UPDATE table_name
SET value = TRIM(
BOTH ',' FROM
REGEXP_REPLACE(
REGEXP_REPLACE(value, '(^|,)aaa', '\1'),
',{2,}',
','
)
)
WHERE value LIKE '%,aaa%'
OR value LIKE 'aaa%'
2条答案
按热度按时间cs7cruho1#
要使用简单的字符串函数(比正则表达式快得多)替换完整的术语,请执行以下操作:
其中,对于示例数据:
输出:
| 替换值|
| - -|
| * 空值 *|
| bbb的复数|
| ccc格式|
| ddd,eee|
| 哇,哇,哇|
| 美国汽车协会|
如果可以有多个连续的重复项,则可以使用
REGEXP_REPLACE
:输出:
| 替换值|
| - -|
| * 空值 *|
| bbb的复数|
| ccc格式|
| ddd,eee|
| 哇,哇,哇|
| * 空值 *|
fiddle
至于你的评论:
我必须更新
column_name like ('%,aaa%,)
数据库如果要从每个术语的开头删除
aaa
(并删除空术语),则:fiddle
dbf7pr2w2#
您可以在此处使用正则表达式替换方法:
Demo(第一个字母)
如果需要更新,请用途: