今天由于工作需要,需要把数据把列根据指定的内容拆分数据

其中一条数据实例

select id , XXXX FROM BIZ_PAPER where id ='4af210ec675927fa016772bf7dd025b0'

拆分方法:

select t3.id ,t3.XXXX as XXXX from (select A.id , B.XXXX from (SELECT id, XXXX = CONVERT(xml,'<root><v>' + REPLACE(XXXX , ',', '</v><v>') + '</v></root>') FROM BIZ_PAPER) Aouter apply(SELECT XXXX = N.v.value('.', 'varchar(100)') FROM A.XXXX .nodes('/root/v') N(v)) B) t3 where t3.id ='4af210ec675927fa016772bf7dd025b0'

在自己研究这行代码之后,做出如下讲解,如果有错误的地方还请指教

SELECT id, XXXX = CONVERT(xml,'<root><v>' + REPLACE(XXXX , ',', '</v><v>') + '</v></root>') FROM BIZ_PAPER

REPLACE 指按照 ' , ' 进行替换,并且按照指定的内容进行拼接

最后的结果为

outer apply

这个就是表的关联,就像是left join ,但是没有on 作为关联条件,所以通过拆分之后多出来的数据就是通过这个进行关联后产生的

 SELECT XXXX = N.v.value('.', 'varchar(100)') FROM A.XXXX .nodes('/root/v') N(v)

value的第一个参数是一个字符串文字,从 XML 实例内部检索数据。 XQuery 必须最多返回一个值。 否则,将返回错误;

value的第二个参数是指将查询结果转化为何种类型的数据。

此处,'.'表示当前目录,即<v>目录,另外'..'表示上级目录,'/'表示根目录,这个跟Linux是一样的

总的来说,这个语句的重点在于xml类型的使用和outer apply的使用,其他的都很好理解。这个就是我自己理解后的讲解,部分位置我自己也还没有理解透

总结

更多相关文章

  1. 《Android和PHP最佳实践》官方站
  2. mybatisplus的坑 insert标签insert into select无参数问题的解决
  3. python起点网月票榜字体反爬案例
  4. 《Android开发从零开始》——25.数据存储(4)
  5. Android系统配置数据库注释(settings.db)
  6. android用户界面之按钮(Button)教程实例汇
  7. Android中不同应用间实现SharedPreferences数据共享
  8. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  9. android图表ichartjs

随机推荐

  1. Oracle的临时表空间
  2. 数据库不支持中文解决方案(mysql)
  3. sql2000 第一次执行慢
  4. SQL 在线 UML 设计器 — 使用详解
  5. 我应该如何选择一列与另一列相关的语句?
  6. oralce 解除锁定的表
  7. 文件转换 - .mwb到.sql文件
  8. 返回没有匹配条目的所有日期
  9. SQL2000数据库脱机/只读/紧急模式 修复
  10. Oracle 00932. 00000 - “不一致的数据