Мне нужно вставить строку символов после каждого символа в Oracle SQL.Вставить символ между строкой Oracle SQL
Пример:
ABC will A,B,C
DEFG will be D,E,F,G
Этот вопрос дает только один символ в строке
Oracle insert character into a string
Мне нужно вставить строку символов после каждого символа в Oracle SQL.Вставить символ между строкой Oracle SQL
Пример:
ABC will A,B,C
DEFG will be D,E,F,G
Этот вопрос дает только один символ в строке
Oracle insert character into a string
Edit: Как некоторые ребята уже упоминали, Oracle не допускает это регулярное выражение. Поэтому мой подход состоял бы в том, чтобы сделать регулярное выражение для соответствия всем символам, добавить им запятую после символа и затем удалить последнюю запятую.
WITH regex AS (SELECT REGEXP_REPLACE('ABC', '(.)', '\1,') as reg FROM dual) SELECT SUBSTR(reg, 1, length(reg)-1) FROM regex;
Обратите внимание, что при решении rtrim
не может быть ошибки, если строка, которую вы хотите, чтобы разобрать имеет конечное окончание запятой, и вы не хотите, чтобы удалить его.
Предыдущее решение: (Не работает на Oracle)
Проверьте, если это делает трюк:
SELECT REGEXP_REPLACE('ABC', '(.)(?!$)', '\1,') FROM dual;
Это делает regexp_replace
каждого персонажа, но последний за тот же характер, заканчивающуюся на ,
Чтобы увидеть, как regexp_replace
работы я рекомендую вам: https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm
Вы могли бы сделать это U петь:
Например,
SQL> WITH sample_data AS(
2 SELECT 'ABC' str FROM dual UNION ALL
3 SELECT 'DEFG' str FROM dual UNION ALL
4 SELECT 'XYZ' str FROM dual
5 )
6 -- end of sample_data mimicking a real table
7 SELECT str,
8 rtrim(regexp_replace(str, '(\w?)', '\1,'),',') new_str
9 FROM sample_data;
STR NEW_STR
---- ----------
ABC A,B,C
DEFG D,E,F,G
XYZ X,Y,Z
Почему нам нужно '(1)?' В шаблоне регулярных выражений? – Noel
@ Ноэль А! правильно, не нужно. Благодарю. –
ВЫБРАТЬ RTRIM (REGEXP_REPLACE ('ABC', '().', «\ 1, '),', ') "REGEXP_REPLACE" FROM dual;
Lookahead и Lookbehind не поддерживаются в Oracle. – Noel
Это решение не сработает. Проверьте выход, он ничего не сделает. –
Я изменил его, так что он работает сейчас. – barbarity