我需要从VARCHAR2列中的数据中提取文本值。样品:
EDKES^Visit: ^PRIMARY INSURANCE COMMENTS: ^SECONDARY INSURANCE COMMENTS: ^TERTIARY INSURANCE COMMENTS: ^NO PRIMARY INSURANCE^NONE^NONE^NONE^NONE^NONE^NONE^NONE^NONE^NONE^NO SECONDARY INSURANCE^NONE^NONE^NONE^NONE^NONE^NONE^NONE^NONE^NONE^NO TERTIARY INS*
我需要获得第6次出现'^'的文本(不包括'^')。在此示例中,文本为NO PRIMARY INSURANCE
。
([\w\s\:\*]+(\^?))
主要有效,但不排除'^'。
当我尝试使用此表达式REGEXP_SUBSTR(VARCHAR_COL, '([\w\s\:\*]+(\^?))', 1, 6)
时,我得到一个字符('s'),而不是预期的匹配NO PRIMARY INSURANCE^
。
我错过了什么?
答案 0 :(得分:1)
这应该可以很好地运作:
REPLACE(REGEXP_SUBSTR(VARCHAR_COL, '[^^]+\^?', 1, 6), '^', '')
答案 1 :(得分:1)
您也可以考虑空白列。如果发动机只返回
捕获组,它将修剪分隔符。
([^^]*).?
这当然意味着找到的最后一列始终无效。