Oracle

REGEXP_SUBSTR 拆分分隔值

  • January 28, 2022

我有一個名為的欄位FREQUENCY,它的值類似於'10,0;30'. 如何編寫正則表達式以獲得如下結果:

FREQUENCY 

10
0
30

如果您希望返回單行的值而不使用逗號和分號,那麼完成此操作的最簡單方法是使用如下REPLACE()函式REPLACE(REPLACE(FREQUENCY, ',', ' '), ';', ' ') "FREQUENCY".

由於您有不同的分隔符,請將它們更改為一個(例如分號),然後將列拆分為行。

SQL> with test (freq) as
 2    (select '10,0;30' from dual)
 3  select regexp_substr(replace(freq, ',', ';'), '[^;]+', 1, level) freq
 4  from test
 5  connect by level <= regexp_count(replace(freq, ',', ';'), ';') + 1;

FREQ
-------
10
0
30

SQL>

引用自:https://dba.stackexchange.com/questions/287528