Использование RTRIM или REGEXP_REPLACE для замены запятой на пробел и одинарную кавычку

Я пытаюсь изучить Oracle regexp_replace достаточно хорошо, чтобы взять значение, хранящееся в таблице, в виде строки, разделенной запятыми, и изменить символ запятой с помощью одинарной кавычки, за которой следует запятая, за которой следует пробел, за которым следует одиночная кавычка.

Например, поле (CourseListT) содержит коды курса, которые выглядят следующим образом:

PEOE100, H003, H102, L001, L100, L110, M005, M020, M130

Я хочу, чтобы это выглядело так:

PEOE100, H003, H102, L001, L100, L110, M005, M020, M130

Я начал с маленьких шагов и нашел здесь статью № 25997057, которая показала мне, как вставлять пробелы. Итак, у меня это работает:

SELECT 
  regexp_replace(gr.CourseListT,'([a-zA-Z0-9_]+)(,?)','  \1\2')
FROM gradreq gr
WHERE gr.gradreqsetid = 326
AND gr.SubjectArea = 'Electives'

Но ничто из того, что я сделаю, не позволит мне вставить эти глупые одинарные кавычки.

Было бы лучше научиться замене RTRIM? Может ли кто-нибудь помочь мне узнать, как это сделать?

Спасибо Шелли


person DataBased    schedule 13.01.2017    source источник


Ответы (1)


Вы можете просто сделать это с помощью replace. Используйте двойные одинарные кавычки, чтобы избежать одинарных кавычек.

select '''' || replace(CourseListT, ',', ''', ''') || '''' 
from gradreq
person Vamsi Prabhala    schedule 13.01.2017
comment
Я отредактировал для удобства чтения, но также для добавления пробела после запятой в строке замены, в соответствии с требованиями OP. - person mathguy; 13.01.2017
comment
Большое спасибо! Значит, одинарная кавычка ускользает от другой одиночной кавычки? Я ценю вашу помощь! - person DataBased; 13.01.2017