7

Oracleの列に特定の文字が出現する回数をカウントするにはどうすればよいですか?たとえば、との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

これに対する通常のトリックの 1 つは、 と の組み合わせを使用することlengthですreplace

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

replace3 番目の引数がないと、単純に文字が削除されます。

于 2012-05-27T06:35:24.743 に答える
22

Oracle のバージョン (11.1 で導入された) に応じて、regexp_count次のようなことを行う方が明確になる傾向があります

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 に答える