如何用特定值替换逗号分隔的不同值

时间:2019-06-12 23:37:48

标签: oracle plsql

我有一个带有值的字符串-'a','b','c','d,'e'。我需要将每个值转换为文本null-null,null,null,null,null。如果引号中有10个值并用逗号分隔,则将出现10个null。我尝试使用REGEXP_REPLACE,但无法获得结果。

declare
a varchar2(32767) := q'#'a','b','c'#';
c varchar2(32767);
begin
c := replace(REGEXP_REPLACE (a, <don't know what pattern should be here>, 'null'),'''');
dbms_output.put_line(c);
end;
/

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。例如,您可以使用正则表达式'[^,]+'-表示任意数量(一个或多个)连续的非逗号字符。然后,该模式的每次出现都将被替换字符串替换(而逗号将保留在原处)。

declare
a varchar2(32767) := q'#'a','b','c'#';
c varchar2(32767);
begin
c := REGEXP_REPLACE (a, '[^,]+', 'null');    -- notice the regular expression
dbms_output.put_line(c);
end;
/


null,null,null


PL/SQL procedure successfully completed.