交流群:462197261站长百科站长论坛热门标签收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
点击这里给我发消息
  • 当前位置:
  • 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数据列根据内容拆分数据内容请搜索北冥有鱼以前的文章或继续浏览下面的相关文章希望大家以后多多支持北冥有鱼!


    广而告之:
    热门推荐:
    js 奇葩技巧之隐藏代码

    昨天在群看到有人发了个文章叫《“短”化你的代码》,思路非常不错,采用unicode的零宽字符来实现字符隐藏,虽然有字符,可是你却看不见它。 这篇文章详细的介绍了这种方法的实现原理,最后还给出了一个生成工具。 当然,作者算了留了一个小小的练习给我们,因为他只用了两个字符···

    详解小程序循环require之坑

    1. 循环require 在JavaScript中,模块之间可能出现相互引用的情况,例如现在有三个模块,他们之间的相互引用关系如下,大致的引用关系可以表示为 A -> B -> C -> A,要完成模块A,它依赖于模块C,但是模块C反过来又依赖于模块A,此时就出现了循环require。 // a.js ···

    PHP写UltraEdit插件脚本实现方法

    需求: 1 svn上的代码在本地(编辑器UltraEdit)有一套,在开发机(centos)上有一套,需要本地的代码修改以后上传到开发机上 2 不直接在开发机上修改和使用,原因是有多个人都使用同一个开发机,为了保留本地备份 思路: 1 写一个脚本作为UltraEdit的插件,使得代码修···

    Node.js中npm常用命令大全

    npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包。 npm install 安装模块 基础语法 npm install (with no args, in package dir) npm install [<@scope>/]<na···

    用jQuery实现可输入多选下拉组合框实例代码

      【写在前面的话】网站上很多用各种插件,比如依赖bootstrap的bootstrap-select插件等。虽然这些框架可以实现很多功能,但因为在实际项目中,可能只会用到其中的某个功能,若是一概引入,会导致整个js加载过于笨重。比如前面提到的bootstrap-select插件,在不压缩的情况下,···

    33个优秀的 jQuery 图片展示插件分享

    jQuery 是一个非常优秀的 JavaScript 框架,使用简单灵活,同时还有许多成熟的插件可供选择,其中最令人印象深刻的应用之一就是对图片的处理,它可以让帮助你在你的项目中加入一些精美的效果,给访问者对网站留下非常好的印象 1. Foxibox  2. MobilySelect  ···

    php判断变量类型常用方法

    现在让我们了解下具体的使用方法 gettype() gettype 会根据 参数类型返回下列值 “boolean”(从 PHP 4 起) “integer” “double”(如果是 float 则返回“double”,而不是“float”) “string” “array” “object” “resource”(从 PHP 4 起) “NULL”(从 PHP 4 起) “unknown ty···

    js 实现打印网页中定义的部分内容的代码

    1、在页面的代码头部处加入 JavaScript: 复制代码 代码如下: <script language=javascript> function doPrint() { bdhtml=window.document.body.innerHTML; sprnstr="<!--startprint-->"; eprnstr="<!--endprint-->"; prnhtml=bdhtml.substr(bdhtml.i···

    JSONP 跨域访问代理API-yahooapis实现代码

    你是否遇到了想利用AJAX访问一些公网API,但是你又不想建立自己的代理服务,因为有时我根本就没打算涉及服务端任何代码,但是讨厌的浏览器的同源策略,阻止了我们的ajax调用。 比如我想访问一个天气的restfull api,如果我直接去GET: 复制代码 代码如下: $.get("http://···

    IIS7 应用程序池的 托管管道模式与集成模式小结

    IIS 7 托管管道模式 经典模式(Classic) 集成模式(Integrated) 分析与理解 IIS 7.0 支持两种管道模式:一种是IIS 7.0最新提供的集成管道模式,另一种是经典管道模式,经典管道模式是由先前版本的IIS提供的。 我们可以通过应用程序池设置管道模式,这项功能对IIS管理员尤其有用,···