Oracle SQL如何提取首次出现的两个//之间的字符串
Oracle提取两个//之间子串的正确方法
你原来的正则表达式写错了:[^}]+是匹配除了}之外的所有字符,根本不是你要的“两个//之间的内容”,所以才会返回第一个//之后的所有内容。
要提取首次出现的两个//之间的子串(比如示例里的4),用下面的REGEXP_SUBSTR语句就行:
REGEXP_SUBSTR(your_column, '//\s*([^/]+?)\s*//', 1, 1, NULL, 1)
正则各部分的作用:
//:匹配第一个出现的//分隔符\s*:匹配//和目标内容之间可能有的空白字符(适配示例里// 4//这种带空格的情况,可选)([^/]+?):非贪婪匹配所有不是/的字符,保证只取到下一个//之前的内容,括号标记要提取的捕获组\s*//:匹配内容后面的//分隔符,同样允许中间有空白字符- 最后一个参数
1:表示提取第一个捕获组的内容
如果你的数据里两个//之间没有空白字符,也可以简化成:
REGEXP_SUBSTR(your_column, '//([^/]+)//', 1, 1, NULL, 1)
内容的提问来源于stack exchange,提问作者HoulB
相关产品推荐
相关产品推荐

