创建测试用表:

CREATE OR REPLACE VIEW v AS
SELECT 'A,B,C' AS c FROM DUAL;

计算字符在字符串中出现的次数

现在要求计算列c中“,”出现的次数,Oracle 11g 给出了新函数REGEXP_COUNT,我们可以直接引用。

SELECT REGEXP_COUNT(c, ',') AS cnt FROM v;

如果没有REGEXP_COUNT的版本,我们可以使用REGEXP_REPLACE迂回求值。

SELECT LENGTH(REGEXP_REPLACE(c, '[^,]')) AS cnt FROM v;

还可以使用TRANSLATE函数:

SELECT LENGTH(TRANSLATE(c, ',' || c, ',')) AS cnt FROM v;

相关文章: