由于各种原因,数据的原则问题,导致某个字段上出现多个数据(依据分隔符隔开),比如 name 字段为 张三;李四;王五等等 需求:求一张表中name字段中出现的个数;



想要得到的结果为:



对应的sql语句:

------------------------创建表,添加数据-----------------------
create table t_student(
id number(2) primary key,
name varchar(10) not null,
age varchar(2) not null
);
alter table t_student modify name varchar(100); --修改字段大小
insert into t_student(id,name,age) values(1,'张三;李四;王五','11');
insert into t_student(id,name,age) values(2,'张三;赵六','12');
insert into t_student(id,name,age) values(3,'王五;赵六','13');
--查询数据
select * from t_student
------------------------按照条件,执行sql--------------------
SELECT M.NAME NAME,
COUNT(1) VALUE FROM(SELECT REGEXP_SUBSTR(TS.NAME, '[^;]+', 1, L) AS NAME
FROM T_STUDENT TS, (SELECT LEVEL L FROM DUAL CONNECT BY LEVEL <= 1000)
WHERE L(+) <= LENGTH(TS.NAME) - LENGTH(REPLACE(TS.NAME, ';')) + 1) M
GROUP BY M.NAME
ORDER BY COUNT(1) DESC

说明:

1. REGEXP_SUBSTR() 函数中的 ‘[^;]+’ 是根据你的字段是以什么隔开的;

2. 上述SQL中WHERE条件中的(+)必须加上、否则 TS.NAME 字段为空的数据无法取得、而且加上(+)后、SQL执行效率能够提高几个数量级;

注: 上述SQL 原理小编也不懂。。。如有大神,请留言指教!!!

最新文章

  1. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 面向全国标准省市县行政数据基础之上的组织机构管理
  2. JsRender for index 循环索引使用说明
  3. 于网站主机,DNS,域名解析,Web服务器关系详解
  4. jdk+myeclipse配置安装相关步骤
  5. 调用robustfit函数作稳健回归
  6. FineUI Grid控件右键菜单的实现
  7. Fedora 21 安装Infinality
  8. jquery .net 无刷新多文件上传
  9. oracle动态注冊參数local_listener
  10. Exception fixing docBase for context
  11. [js高手之路]HTML标签解释成DOM节点
  12. 2017&quot;百度之星&quot;程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】
  13. properties类是Hashtable的子类
  14. Assembly Experiment5
  15. 由JDBC而来的对Class.forName()用法发散
  16. UESTC - 1172 三句话题意
  17. ibatis注意要点
  18. Xml中SelectSingleNode方法中的xpath用法
  19. Spring框架使用(控制反转,依赖注入,面向切面AOP)
  20. plsql分页

热门文章

  1. C++标准模板库(STL)之Stack
  2. 免费赠送原创的opengl电子书教程和案例源码
  3. 关于C++中Hash的应用
  4. springboot秒杀课程学习整理1-5
  5. 《程序设计入门——C语言》翁恺老师 第二周编程练习记录
  6. VsCode编写博客发布
  7. sql表中数据遍历
  8. mui组件 输入表单 快捷键mf
  9. 自定义Hook
  10. socket.error: [Errno 99] Cannot assign requested address