REGEXP_SUBSTR()
Oracleの関数を使用して、テキストフィールドから分数を抽出しようとしています。
データ:
Treatment of PC7, PT1 on left. 15 min.
15 minutes.
15 minutes
15 mins.
15 mins
15 min.
15 min
15min
15
いずれの場合も、文字列の「15」の部分を抽出したいと思っています。
試み:
\d+
「7」と「1」を含むすべての数値を取得しますが、これは望ましくありません。(\d)+(?=\ ?min)
最後を除くすべての行から「15」を取得します。(?((\d)+(?=\ ?min))((\d)+(?=\ ?min))|\d+)
、条件文は、何にも一致しません。
私の条件文の何が問題になっていますか?
** 編集 **
WITH DATA AS (
SELECT 'Treatment of PC7, PT1 on left. 15 min.' COMMENTS FROM DUAL
UNION ALL
SELECT '15 minutes.' COMMENTS FROM DUAL
UNION ALL
SELECT '15 minutes' COMMENTS FROM DUAL
UNION ALL
SELECT '15 mins.' COMMENTS FROM DUAL
UNION ALL
SELECT '15 mins' COMMENTS FROM DUAL
UNION ALL
SELECT '15 min.' COMMENTS FROM DUAL
UNION ALL
SELECT '15 min' COMMENTS FROM DUAL
UNION ALL
SELECT '15min' COMMENTS FROM DUAL
UNION ALL
SELECT '15' COMMENTS FROM DUAL
)
SELECT COMMENTS,
REGEXP_SUBSTR(COMMENTS, '(\d+)\s?(?:min.*)?$', 1, 1) A,
REGEXP_SUBSTR(COMMENTS, '\d+?(?= ?min)|^\d+$', 1, 1) B,
REGEXP_SUBSTR(COMMENTS, '\d+?(?: ?min)|^\d+$', 1, 1) C
FROM DATA
結果(「コードサンプル」としてよりも列をフォーマットするためのより良い方法が必要です):
COMMENTS A B C
Treatment of PC7, PT1 on left. 15 min.
15 minutes.
15 minutes
15 mins.
15 mins
15 min.
15 min
15min
15 15 15 15