oracle varchar列可以在同一列中包含多次出现的值,如"N.S. Code 123" , "N S Code 678" , "N S Codes 567" , "N.S.Code 345"
等。需要输出的SQL查询为:
678
567
345
...
答案 0 :(得分:0)
您可以使用REGEXP_SUBSTR
和CONNECT BY
。
注意:模式\d{3}"
搜索正好3位数的数字。但是,如果您的数字有不同的数字,则可以使用\d+
。
另外,目前还不清楚你的字符串中是否包含这两个字符:"N S Code"
和"N S Codes"
。否则,我可以包括以正则表达式模式来容纳它。
WITH t (str)
AS (SELECT '"N.S. Code 123" , "N S Code 678" , "N S Codes 567" , "N.S.Code 345"'
FROM DUAL)
SELECT REGEXP_SUBSTR (str,
'(\d{3})"',
1,
LEVEL,
NULL,
1)
FROM t
CONNECT BY LEVEL <= REGEXP_COUNT (str, '(\d{3})"');