Вопрос по regex, sql, string – Подсчет количества вхождений символа в Oracle SQL [закрыто]

7

Как я могу посчитать, сколько раз определенный символ встречается в столбце в Oracle? Например, если у меня есть столFOO который имеет такие данные, какa,ABC,def а также2,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
не получается использовать оракул sql .. Sharath
Попробуйте вариант по этой ссылкеblogs.oracle.com/aramamoo/entry/… premnathcs
используя PL / SQL у меня есть. Sharath

Ваш Ответ

2   ответа
30

length а такжеreplace:

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

replace без третьего аргумента просто уберет персонажа.

22

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
Error: User Rate Limit Exceededstackoverflow.com/questions/6042568/…
Error: User Rate Limit Exceededselect regexp_count('AB|C|D%E','\|') from dual;
Error: User Rate Limit Exceededselect regexp_count('AB|C|D%E','|') from dual;Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы