无法使用SQL中的替换函数替换子字符串



我在一列中有一个字符串,并且希望替换下一列中的ROLE_ADMIN角色;角色开发人员、角色PRV1、角色测试、角色访客、角色DOC、角色管理员使用替换

**select REPLACE('ROLE_DEVELOPER,ROLE_PRV1,ROLE_TEST,ROLE_VISITOR,ROLE_DOC,ROLE_ADMIN -COPY',',ROLE_ADMIN','')**

然而,这里有一个用例如下,我希望数据应该保持不变,因为ROLE_ADMIN-COPY是一个不同的角色";ROLE_DEVELOPER、ROLE_PRV1、ROLE_TEST、ROLE_VISITOR、ROLE_DOC、ROLE_ADMIN-COPY但其打印ROLE_DEVELOPER、ROLE_PRV1、ROLE_TEST、ROLE_VISITOR、ROLE_DOC-COPY

有人能帮忙解决这个问题吗?注意:-我只能使用一个通用查询

您可以用分隔符将列表括起来,然后用单个分隔符替换术语以及前导和尾随分隔符,以确保匹配整个术语,然后修剪字符串以删除环绕的分隔符。

在Oracle中,这将是:

SELECT TRIM(
BOTH ',' FROM
REPLACE(
','||role_list||',',
',ROLE_ADMIN,',
','
)
) AS updated_list
FROM   table_name;

对于样本数据:

CREATE TABLE table_name (role_list) AS
SELECT 'ROLE_DEVELOPER,ROLE_PRV1,ROLE_TEST,ROLE_VISITOR,ROLE_DOC,ROLE_ADMIN' FROM DUAL UNION ALL
SELECT 'ROLE_DEVELOPER,ROLE_PRV1,ROLE_TEST,ROLE_VISITOR,ROLE_DOC,ROLE_ADMIN_COPY' FROM DUAL UNION ALL
SELECT 'ROLE_DEVELOPER,ROLE_PRV1,ROLE_TEST,ROLE_VISITOR,ROLE_DOC,ROLE_ADMIN,ROLE_ADMIN_COPY' FROM DUAL;

输出:

UPDATED_LIST
ROLE_DEVELOPER、ROLE_PRV1、ROLE_TEST、ROLE_VISITOR、ROLE_DOC
ROLE_DEVELOPER、ROLE_PRV1、ROLE_TEST、ROLE_VISITOR、ROLE_DOC、ROLE_ADMIN_COPY
ROLE_DEVELOPER、ROLE_PRV1、ROLE_TEST、ROLE_VISITOR、ROLE_DOC、ROLE_ADMIN_COPY