sql数据拆分插入另一个表(Sql Server数据把列根据指定内容拆分数据的方法实例)
sql数据拆分插入另一个表
Sql Server数据把列根据指定内容拆分数据的方法实例今天由于工作需要,需要把数据把列根据指定的内容拆分数据
其中一条数据实例
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) A outer 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
这一行的重点在于CONVERT,XML是指类型,xml 数据类型实例拆分为关系数据,则 nodes() 方法非常有用,至于XML类型的数据,我后面进行补充
REPLACE 指按照 ' , ' 进行替换,并且按照指定的内容进行拼接
最后的结果为
outer apply
这个就是表的关联,就像是left join ,但是没有on 作为关联条件,所以通过拆分之后多出来的数据就是通过这个进行关联后产生的
SELECT XXXX = N.v.value('.', 'varchar(100)') FROM A.XXXX .nodes('/root/v') N(v)
N.v.value('.','varchar(100)'),N是表,别名,v是列,value函数是读取标签之间的值,对于这个列子,读取的为<v>和</v>中间的值;这个可以去了解 xml类型的常用的三个方法 :value()、nodes()、exist()
value的第一个参数是一个字符串文字,从 XML 实例内部检索数据。 XQuery 必须最多返回一个值。 否则,将返回错误;
value的第二个参数是指将查询结果转化为何种类型的数据。
此处,'.'表示当前目录,即<v>目录,另外'..'表示上级目录,'/'表示根目录,这个跟Linux是一样的
总的来说,这个语句的重点在于xml类型的使用和outer apply的使用,其他的都很好理解。这个就是我自己理解后的讲解,部分位置我自己也还没有理解透
总结
到此这篇关于Sql Server数据把列根据指定内容拆分数据的文章就介绍到这了,更多相关SqlServer数据列根据内容拆分数据内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- sqlserver存储过程参数默认值(sql server使用临时存储过程实现使用参数添加文件组脚本复用)
- sqlserver维护计划保存在哪(SQL Server误设置max server memory的处理方法)
- SQLServer中使用扩展事件获取Session级别的等待信息及SQLServer 2016中Session级别等待(SQLServer中使用扩展事件获取Session级别的等待信息及SQLServer 2016中Session级别等待)
- sqlserver查看某个库所有表(SQL Server怎么找出一个表包含的页信息Page)
- sqlserver恢复delete数据(SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢)
- sqlserverdate格式比较(sqlserver之datepart和datediff应用查找当天上午和下午的数据)
- sqlserver怎么调成混合登录(如何快速删掉SQL Server登录时登录名下拉列表框中的选项)
- sqlserver调试存储过程(sql server2008调试存储过程的完整步骤)
- sqlserver中根据日期时间获取秒数(sql server编写通用脚本实现获取一年前日期的方法)
- sqlserver删除表的第一行数据(sql server删除前1000行数据的方法实例)
- sqlserver数据库备份怎么还原(SQL Server2012数据库备份和还原的教程)
- sqlserver2012海量数据查询(SQL Server 2012 多表连接查询功能实例代码)
- sqlserver 插入数据的触发器(SQL server 表数据改变触发发送邮件的方法)
- docker启动sqlserver(用docker运行postgreSQL的方法步骤)
- sql server导入数据csv文件(大容量csv快速内导入sqlserver的解决方法推荐)
- sqlserver常用流控语句(SQL Server实现自动循环归档分区数据脚本详解)
- 相声转行影帝,被何晴抛弃,甩10年女友闪婚生子,刘威不靠谱情史(相声转行影帝被何晴抛弃)
- 岳云鹏不说相声,改行演员了 网友 快回来说相声(岳云鹏不说相声)
- 乔欣首演古装大女主,颜值演技双在线(乔欣首演古装大女主)
- 于正又推女性古装大剧 杨蓉乔欣演女配,两位女主成 重头戏(于正又推女性古装大剧)
- 乔欣古装女主戏获热度 作为女主,却没吃到红利(乔欣古装女主戏获热度)
- 爱情是什么(爱情是什么最经典的话)
热门推荐
- 服务器怎么做到实时备份(香港云服务器数据备份周期多久最好?)
- php制作用户登录(php实现登录页面的简单实例)
- dedecms如何使用标签(dedecms 移动文章后,原来生成的HTML依然存在解决方法)
- php收集多个统计数据(PHP实现统计代码行数小工具)
- mysql日志使用(MySQL 日志相关知识总结)
- dell r730服务器安装操作系统(DELL R730服务器配置RAID与安装服务器系统以及域的控制详细图文教程)
- layui多级联动下拉框的实现(使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果)
- javascript组件库实现(JavaScript分页组件使用方法详解)
- python简易翻译器的运行(Python3.6实现带有简单界面的有道翻译小程序)
- dede编码在哪里改(dede栏目页面包屑导航最后的分隔符大于号去掉方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9