計算字符在字符串中出現的次數



比如‘a,b,c’這個字符串中計算子串個數,我們一般都是計算其中的逗號個數加1

create view v as select 'a,b,c' as str from dual;

oracle11g給出了新函數regexp_count

select regexp_count(str,',')+1 as cnt from v;

而在11g之前沒有這個函數,我們可以用regexp_replace代替

select length(regexp_replace(str,'[^,]'))+1 as cnt from v;

還可以使用translate

select length(translate(str,','||str,','))+1 as cnt from v;


如果分隔符有一個以上(a$#b$#c$#),那就要把計算出來的長度再除以分隔符長度

select length(translate(str,'$#'||str,'$#'))/length('$#')+1 as cnt from v;

用regexp_count就不用考慮長度

select regexp_count(str,'\$#')+1 as cnt from v;

注:“\”進行轉義,"$"是通配符

發佈了37 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章