当前位置: 首页 > news >正文

直销网站建设网络舆情监控

直销网站建设,网络舆情监控,国际网购平台有哪些,基层政府网站建设Sql进阶 一、问题描述二、解决思路<一>、拆成多行<二>、拆成多列 三、代码实现 一、问题描述 Oracle数据库中某个字段value是CLOB类型,存的是csv格式的数据,如下所示 classnovalue1name,age,sex,… ‘李世民’,20,‘M’,…’ ‘李治’,18,‘M’,… ‘武则天’,16…

Sql进阶

  • 一、问题描述
  • 二、解决思路
    • <一>、拆成多行
    • <二>、拆成多列
  • 三、代码实现

一、问题描述

Oracle数据库中某个字段value是CLOB类型,存的是csv格式的数据,如下所示

classnovalue
1name,age,sex,… ‘李世民’,20,‘M’,…’ ‘李治’,18,‘M’,… ‘武则天’,16,‘F’,… ‘李隆基’,14,‘M’,…
2

需要把上述clob类型的csv字段用Sql的方式展开,如上述csv字段有四行三列,就需要把上述字段转成实际的四行三列,如下所示

classnonameagesex
1李世民20M
1李治18M
1武则天16F
1李隆基14M
2

二、解决思路

<一>、拆成多行

  • 按照换行符拆分一个个的列表,上述换行符是\n,按照\n进行拆分比较难写,考虑先把\n替换成其它符号,如分号
换行符在oracle中用chr(10)表示
select replace(value,chr(10),';') as value from table
  • 按照换行符进行拆分字符串
select to_char(regexp_substr(value,'[^;]+',1,level) as split_valuefrom table
connect by level <= regexp_count(value,'[^;]+',1)and prior class_no = class_noand prior sys_guid() is not null

regexp_substr()函数为拆分字符串,若没有connect by语句,只是

select to_char(regexp_substr(value'[^;]+',1) as split_valuefrom table

则不会循环进行拆分,只会拆分第一段,比如我那个例子,只会获取到

classnovalue
1‘李世民’,20,‘M’
2

CONNECT BY是Oracle SQL中的一个子句,用于定义层次结构或递归关系,从而进行层次结构数据的查询。
LEVEL是Oracle SQL中的一个伪列,用于在层次结构或递归查询中获取当前行的级别。
REGEXP_COUNT 用于计算字符串中正则表达式匹配的次数

上述level <= regexp_count(value,‘[^;]+’,1)就是递归停止的条件

prior条件指的是当前递归在哪个层级下运行,比如上述例子一个csv字段描述的是一个班级的事情,递归是在这个班级下运行,所以prior条件要加上prior class_no = classno,不然会造成数据重复
需要注意prior后接的条件需要能够限制某个递归层级,不然可能会造成数据不断的循环
若是有多个prior条件,可以
and prior col1 = col1
and prior col2 = col2
而不是
and prior col1 = col1 and col2 = col2

经过上述处理之后,得到的结果应该是

classnovalue
1name,age,sex,…
1‘李世民’,20,‘M’,…
1’ ‘李治’,18,‘M’,…
1‘武则天’,16,‘F’,…
1‘李隆基’,14,‘M’,
2

已经拆成多行了,剩下的是拆成多列

<二>、拆成多列

  • 根据列的分隔符来拆分,以逗号为例
select regexp_substr(split_value,'[^,]+',1,1) as name,regexp_substr(split_value,'[^,]+',1,2) as age,regexp_substr(split_value,'[^,]+',1,3) as sexfrom table
  • 还是用regexp_substr函数来拆分,只不过不进行递归查询,

三、代码实现

with tmp as (select classno,replace(value,chr(10),';') as valuefrom table
),tmp1 as (select to_char(regexp_substr(value,'[^;]+',1,level)) as split_value,classnofrom tmpconnect by level <= regexp_count(value,'[^;]+',1)and prior classno = classnoand prior sys_guid() is not null
),tmp2 as (select classno,regexp_substr(value,'[^,]+',1,1) as name,regexp_substr(value,'[^,]+',1,2) as age,regexp_substr(value,'[^,]+',1,3) as sexfrom tmp1
)select classno,name,age,sexfrom tmp2 where name != 'name'
http://www.bjxfkj.com.cn/article/100521.html

相关文章:

  • 哪个网站做刷手最好北京网站推广
  • 上海网站建设公司地址品牌营销案例
  • 网络规划设计师教程第二版电子版下载网站优化公司哪家好
  • 网站被抄袭怎么办百度搜索指数是怎么计算的
  • 在那个网站做义工好在百度上做广告推广要多少钱
  • 金融软件网站建设公司排名网站建设制作过程
  • 成武网站建设青岛seo服务哪家好
  • 哪个网站可以悬赏做图网络搜索引擎优化
  • 伊利牛奶的网站建设策划书百度站长app
  • 济阳做网站哪家好做一个电商平台大概需要多少钱
  • 做网站公司郑州郑州的网站建设公司排名seo常用分析的专业工具
  • 中小企业网站建设应该注意什么免费广告推广
  • 哪些网站做财金的好百度竞价投放
  • 做影视免费网站违法吗网店运营流程步骤
  • 新疆生产建设兵团卫生局网站专业seo网站
  • 台州黄岩做网站企业培训权威机构
  • 阿里云做的网站误删了免费测试seo
  • 八戒网站做推广菏泽百度推广公司电话
  • 企业网站 静态页面软文推广有哪些平台
  • 如何制作自己的网站二维码网站关键词推广优化
  • 链接网站怎么做武汉seo关键词排名
  • 可信网站的作用培训学校网站
  • 网站建设哪家效果好网络黄页推广软件哪个好用
  • 网页设计实验报告对于dw掌握情况关键词优化心得
  • 网站底部固定广告代码石家庄关键词优化报价
  • 合肥知名网站制作西安网站建设公司十强
  • 佛山高明网站建设设计北京百度网讯人工客服电话
  • windows 没有wordpress西安seo外包服务
  • 来安县城乡规划建设局网站seo网站排名优化软件是什么
  • 柳市网页设计seo查询