暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle中,如何计算一个字符在字符串中出现的次数?

DB宝 2017-04-29
2164

Q
题目如下所示:

   

在Oracle中,如何计算一个字符在字符串中出现的次数?


     

A
答案如下所示:


 可以利用REGEXP_COUNT、REGEXP_REPLACETRANSLATE系统函数,也可以自定义函数来计算一个字符在字符串中出现的次数如下的示例分别计算逗号和“$#在字符串CLARK,KING$#MI,LLER,MI$#ABC中出现的次数

  1. SYS@lhrdb> CREATE OR REPLACE VIEW V AS  SELECT 'CLARK,KING$#MI,LLER,MI$#ABC' AS STR FROM DUAL;

  2. View created

  3. SYS@lhrdb> SELECT REGEXP_COUNT(STR,',') A,LENGTH(REGEXP_REPLACE(STR,'[^,]')) B,LENGTH(TRANSLATE(STR,','||STR,',')) C,FUN_GETSPECHARCOUNTS_LHR(STR,',') D FROM V;

  4.          A          B          C          D

  5. ---------- ---------- ---------- ----------

  6.          3          3          3          3

  7. SYS@lhrdb> SELECT REGEXP_COUNT(STR,'$#') A , REGEXP_COUNT(STR,'\$#') B,FUN_GETSPECHARCOUNTS_LHR(STR,'$#') C FROM V;

  8.          A          B          C

  9. ---------- ---------- ----------

  10.          0          2          2   


其中,自定义函数FUN_GETSPECHARCOUNTS_LHR的内容如下所示:

  1. CREATE OR REPLACE FUNCTION FUN_GETSPECHARCOUNTS_LHR(P_STRING IN VARCHAR2,P_SPECHAR IN VARCHAR2 DEFAULT ',') RETURN NUMBER AS

  2.         V_COUNT    NUMBER := 0;

  3.         V_POSITION NUMBER := 0; --特殊字符的位置

  4.         V_SPECHAR  VARCHAR2(20) := P_SPECHAR;

  5.     BEGIN

  6.     

  7.         LOOP

  8.             --找到特殊字符的位置

  9.             SELECT INSTR(P_STRING, V_SPECHAR, V_POSITION+1)

  10.             INTO   V_POSITION

  11.             FROM   DUAL;

  12.         

  13.             IF V_POSITION = 0 OR (V_POSITION >= LENGTH(P_STRING)) THEN

  14.                 EXIT;

  15.             END IF;

  16.         

  17.             V_COUNT := V_COUNT + 1;

  18.         END LOOP;

  19.     

  20.         RETURN V_COUNT;

  21.     END FUN_GETSPECHARCOUNTS_LHR;  




DB笔试面试历史连接

http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

About Me:小麦苗

 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处

 QQ:646634621  QQ群:230161599

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。


最后修改时间:2020-01-10 21:18:24
文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论