7

如何计算特定字符在 Oracle 列中出现的次数?例如,如果我有一个包含 and 之类的数据的表,FOO我想计算逗号在数据中出现的次数。a,ABC,def2,3,4,5

CREATE TABLE foo (
  str varchar2(30)
);

INSERT INTO foo VALUES( 'a,ABC,def' );
INSERT INTO foo VALUES( '2,3,4,5' );
commit;

我想要的输出是

str         cnt
a,ABC,def   2
2,3,4,5     3
4

2 回答 2

30

通常的技巧之一是使用lengthand的组合replace

select (length(your_col) - length(replace(your_col, ','))) from your_table;

replace没有第三个参数只会删除字符。

于 2012-05-27T06:35:24.743 回答
22

根据您的 Oracle 版本(regexp_count在 11.1 中引入),我倾向于发现做类似的事情更清楚

SELECT regexp_count( <<column_name>>, ',' )
  FROM <<table_name>>

你可以在你的桌子上看到

SQL> ed
Wrote file afiedt.buf

  1  select str, regexp_count( str, ',' )
  2*   from foo
SQL> /

STR                            REGEXP_COUNT(STR,',')
------------------------------ ---------------------
a,ABC,def                                          2
2,3,4,5                                            3
于 2012-05-27T06:46:51.870 回答