Я нашел множество вопросов, подобных этому, но ни один из них не подходит для меня на 100%. У меня есть Oracle 11g выразитьоракул разделен запятой цитата строка
у меня есть эта строка
'abcd,123,,defoifcd,"comma, in string",87765,,,hello'
это означает, как правило, запятая разделяет данные, но может быть пустыми данные (даже больше в серии), и если есть запятая в данном он цитируется.
до сих пор лучший р ехр является то, что один
'("[^"]*"|[^,]+)'
, но это ставит в конце всех пустых данных с помощью этого запроса
with test as
(select
'abcd,123,,defoifcd,"comma, in string", 87765,,,hello'
str from dual
)
select REGEXP_SUBSTR(str, '("[^"]*"|[^,]+)', 1, rownum) split
from test
connect by level <= length (regexp_replace (str, '("[^"]*"|[^,]+)')) + 1;
я также пытался заменить пустые данные с , п/к, так чтобы иметь
'abcd,123,n/a,defoifcd,"comma, in string",87765,n/a,n/a,hello'
но REGEXP_REPLACE заменяет только первое вхождение пустого данные
select
regexp_replace('abcd,123,,defoifcd,"comma, in string",87765,,,hello', '(,,)', ',n/a,')
str from dual;
благодарит заранее!
Is [это] (http://stackoverflow.com/a/35502233/266304), на который вы уже посмотрели? Это использует замену, а не regexp_replace, чтобы поставить фиктивное значение в ... –
Да, такого рода замена действительно хорошая идея – pillesoft