У меня есть строка со значениями - "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;
/
спасибо за ответ, не мог понять, какой шаблон я должен написать там, и это был вопрос, который я задал.
Непонятно: почему в вашей попытке вы завернули результат REGEXP_REPLACE
в дополнительный вызов replace
. Что то, что для?
Есть много способов сделать это. Например, вы можете использовать регулярное выражение '[^,]+'
, которое означает любое количество (один или несколько) последовательных символов без запятой. Затем каждое вхождение этого шаблона будет заменено строкой замены (при этом запятые останутся на месте).
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.
Спасибо, mathGuy, это то, что мне нужно.
REGEX_REPLACE не работает, потому что вы не указали регулярное выражение для использования. Я пробовал REGEX_REPLACE означает, что вы должны иметь возможность включить то, что вы действительно пробовали.