在Oracle SQL中的特定字符串之后从字符串中提取一个数字

问题描述:

我想从此字符串中提取:FREQ=DAILY;BYDAY=MON,TUE,WED,THU,FRI;BYHOUR=7;BYMINUTE=0;BYSECOND=0 使用Oracle pl/sql的'BYHOUR='字符串之后的数字。
它可以是1或2个字符长(0-23)
这可能是最好使用正则表达式的正则表达式,但我从来没有流利地创建它们。在Oracle SQL中的特定字符串之后从字符串中提取一个数字

有人可以帮忙解释吗?

使用REGEXP_SUBSTR

SELECT REGEXP_SUBSTR(col, 'BYHOUR=(\d{1,2})') 
FROM yourTable 
+0

谢谢,它的工作,输出虽然是: 'BYHOUR = 12'。是否有可能在这个语句中只使用一个数字(使用正则表达式)还是必须使用substr()方法来获取它? –

+0

我认为你可以改变它到这个REGEXP_SUBSTR(col,'(\ d {1,2})',instr(col,'BYHOUR')) – Chrisrs2292

+0

@chris查看重复的问题的答案 – Bohemian