oracle 数据库中某个字段逗号分隔,得到对应列中的个数(列转行)实现方法
由于各种原因,数据的原则问题,导致某个字段上出现多个数据(依据分隔符隔开),比如 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 原理小编也不懂。。。如有大神,请留言指教!!!
oracle 数据库中某个字段逗号分隔,得到对应列中的个数(列转行)实现方法的更多相关文章
- oracle数据库对date字段类型存在空值进行排序的处理方法
oracle数据库对date字段类型存在空值进行排序的处理方法 oracle 数据库,如果表中有一个字段类型为date,且该字段类型存在空值,并且需要排序, 解决方法为使用oracl ...
- c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库
///c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库 闲话不多说,直接上代码 using System; using System.Collectio ...
- 如何使用MySQL一个表中的字段更新另一个表中字段
[本文出自:https://www.jb51.net/article/150323.htm] 这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ...
- PL/SQL那点事-->修改Oracle数据库里面的字段长度
在开发过程中,遇到有个问题:在Oracle数据库中,利用PL/SQL数据库开发工具来开发,某一字段的长度不能满足需求时候,采用下面的语法就行修改 alter table 表名 modify 字段名 长 ...
- java连接Oracle数据库实现增删改查并在Navicat中显示
创建TEST表 eclipse中的java项目 代码 数据库方法类 DBUtil: package util; import java.sql.Connection; import java.sql. ...
- 通过JDBC取Oracle数据库的时间字段时,时间丢失,只剩日期
通过JDBC连接Oracle数据库,在查询的时候发现时间字段取出来值后只剩下了日期,时间消失了.查资料发现跟Oracle jdbc驱动版本有关,这里先贴出解决方案: 修改数据库的连接方式: try { ...
- Oracle数据库 获取CLOB字段存储的xml格式字符串指定节点的值
参照: Oracle存储过程中使用游标来批量解析CLOB字段里面的xml字符串 背景:在写存储过程时,需要获取表单提交的信息.表单信息是以xml格式的字符串存储在colb类型的字段dataxml中,如 ...
- ORACLE数据库导出表,字段名,长度,类型,字段注释,表注释语句
转自:https://www.cnblogs.com/superming/p/11040455.html --数据库导出表,字段名,长度,类型,字段注释,表注释语句 SELECT T1.TABLE_N ...
- 转 oracle数据库更新时间字段数据时的sql语句
https://www.cnblogs.com/sun-rain/p/4921512.html ---Oracle数据库-时间函数 ---格式化时间插入update t_user u set u.mo ...
随机推荐
- 移动端遇到的问题小结--video
本篇主要是针对Android系统,所遇到的问题. 1. video的全屏处理: 这里说的全屏是指针对浏览器的全屏,而不是整个手机的全屏.要想全屏效果只需对video标签加 webkit-plays ...
- WinForm界面设计优化过程
以在做的项目为例,记录一下界面美化过程中遇到的问题,由于项目是先做出来之后,又请美工进行稍微调整设计界面,所以会又些限制 1. TabControl的问题----在添加了背景图片后,TabContro ...
- (03) spring Boot 的配置
1. spring boot 的核心配置 spring boot 项目建立之后,已经创建好了application.properties 配置文件 其实, 配置文件还支持*.yml 格式的: 2. 多 ...
- python面试题总结(1)
1.python常用的数据类型. int.float.str.set.list.dict.tuple.frozenset.bool.None. 2.docstring是什么? Docstring是一种 ...
- react项目搭建及webpack配置
1,配置webpack npm install -g webpack webpack的cli环境 npm install -g webpack-dev-se ...
- dockerfile编辑时常用的sed命令,用来修改配置文件。
sed 替换部分文件内容 随着使用,会逐步更新. #替换整行sed '/mengqingbo/c lanqiuxiaozi="FALSE"' fileName #匹配行前加sed ...
- python入门(三)
一.判断(精简代码) 非空为真,非0为真# 不为空的话就是true,是空的话就是false# 只要不是0就是true,是0就是falsea=[]#list也是假的b={}#字典也是假的c=0 #也是假 ...
- Java中常见的分页算法
在查询数据的时候或者展示数据的时候经常会使用分页,介绍几种简单的分页算法: //总的页数 int total = 30: //每页个数 int pageSize = 6; 1.one int ...
- Java容器解析系列(9) PrioriyQueue详解
PriorityQueue:优先级队列; 在介绍该类之前,我们需要先了解一种数据结构--堆,在有些书上也直接称之为优先队列: 堆(Heap)是是具有下列性质的完全二叉树:每个结点的值都 >= 其 ...
- 第九周学习笔记-ADO.Net中DataSet的应用
一.知识点描述 1.含义:DataSet是ADO.Net的断开式结构的核心组件,它可以用于多种不同的数据源,用于XML数据,或用于管理应用程序本地的数据.DataSet包含一个或多个DataTable ...