2サンプルのコードのことで接続:PL/SQL、正規表現、
WITH A AS
(SELECT 'this is a test:12/01/2015 01/05/2018'
|| chr(13)
||chr(10)
|| ' this is the 2nd line: 07/07/2017' Description
FROM dual
)
SELECT to_date(regexp_substr(A.Description , '\d{1,2}/\d{1,2}/\d{4}',1,level),'MM/DD/YYYY')
FROM A
CONNECT BY level <= regexp_count(a.description, '\d{1,2}/\d{1,2}/\d{4}');
/
と別:
SELECT DISTINCT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) as "token"
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) IS NOT NULL
order by 1;
第一の場合には、我々は '< =' とでを使用する理由誰かが、私を説明することができます私たちは二番目ですか?
最初の例では、 'IS NOT NULL' ==>単に' CONNECT BY regexp_substr(a.description、 '\ d {1,2}/\ d {1,2}/\ d {4 } '、1、level)はnullではありません。 2番目の例では、 'IS NOT NULL'の代わりに' CONNECT BY <= REGEXP_count('23,34,45,56 '、' [\、] + ')+ 1'を使用できます。'regexp_count'の代わりに' not not null'を選んだ人がいる理由は言うまでもありませんが、それは単に個人的な好みに過ぎません。 – krokodilko
区切られたリストを解析するためにその2番目の選択で正規表現を使用しないでください。 NULLリスト要素を処理せず、誤った値を静かに返します。詳細はこちらをご覧ください:http://stackoverflow.com/questions/31464275/split-comma-separated-values-to-columns-in-oracle/31464699#31464699 –