创建测试用表:
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;