エラー:ORA-00907:右括弧がありません-問題の把握に役立ちますか

Aug 24 2020
select regexp_substr((replace(replace(replace(('CA','CO','IL','KS'),chr(40)),chr(41)), chr(39))), '[^,]+', 1, level) as division from dual
                                   connect by level <= regexp_count(('CA','CO','IL','KS'), '[,]') + 1;  

エラー:ORA-00907:右括弧00907がありません。00000-「右括弧がありません」

これがエラーになっている理由を理解するのを手伝ってくれませんか。

編集-文字列を操作して余分な引用符を含めることはできません。これは私がテーブルから取得する固定形式です。行形式の出力を取得するためにそれを削除するにはどうすればよいですか?

回答

1 BarbarosÖzhan Aug 24 2020 at 21:46

引用の問題があります(一重引用符ごとに引用符を追加した後、用語全体を('CA','CO','IL','KS')引用します)、むしろこれを試してください:

 SELECT regexp_substr((replace(replace(replace('(''CA'',''CO'',''IL'',''KS'')',
                      chr(40)),
                      chr(41)), 
                      chr(39))), '[^,]+', 1, level) AS division 
   FROM dual
CONNECT BY level <= regexp_count('(''CA'',''CO'',''IL'',''KS'')', ',') + 1;

DIVISION
--------
CA
CO
IL
KS

Demo