SQL计数char,除非它被包含在内

时间:2015-09-24 22:26:48

标签: sql regex oracle

在Oracle SQL中,我想计算一个字符串中的所有逗号,不包括双引号内的逗号。

在下一个示例中,计数必须为3

'string1,string2,"string,3",string4'

在下一个示例中,计数也必须是3

'string1,string2,"string,3","string,4"'

REGEXP_COUNT(my_string, ',')分别返回45,这是我最好的尝试,但它总是返回1

SELECT  REGEXP_COUNT(my_string, ',*^(.*".*".*),*')
FROM    (
    SELECT  'string1,string2,"string,3",string4' AS my_string
    FROM    DUAL);

1 个答案:

答案 0 :(得分:0)

首先删除有问题的字符串,然后进行计数

<强> Sql Fiddle Demo

SELECT REGEXP_COUNT(
                  REGEXP_REPLACE(my_string, '(\"[^\"]*\")', ''),
                  ',')
FROM    (
    SELECT  'string1,string2,"string,3",string4' AS my_string
    FROM    DUAL);