我試圖使用Oracle的REGEXP_SUBSTR()
函數從文本字段中提取分鐘數。正則表達式if-else表達式
數據:
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
我看不出有任何的if-else語句。向我們展示實際的代碼,而不是總結。 –
Oracle的regexp函數是否支持條件構造? – Xophmeister
@AndyLester,最後一個要點是'if-else'表達式,至少根據http://www.regular-expressions.info/conditional.html。 – craig