zoukankan      html  css  js  c++  java
  • SQL Server利用XML找字符串相同部分

    DECLARE @a NVARCHAR(100)= '01,02,04,05,07';
    DECLARE @b NVARCHAR(100)= '01,03,04,05,06';
    WITH    a1
              AS ( SELECT   CONVERT(XML, '<root><v>' + REPLACE(@a, ',', '</v><v>')
                            + '</v></root>') cxml
                 ),
            a AS ( SELECT   v.value('.', 'varchar(100)') cv
                   FROM     a1
                            CROSS APPLY cxml.nodes('/root/v') AS C ( v )
                 ),
            b1
              AS ( SELECT   CONVERT(XML, '<root><v>' + REPLACE(@b, ',', '</v><v>')
                            + '</v></root>') cxml
                 ),
            b AS ( SELECT   v.value('.', 'varchar(100)') cv
                   FROM     b1
                            CROSS APPLY cxml.nodes('/root/v') AS C ( v )
                 ),
            x1
              AS ( SELECT   1 AS z ,
                            a.cv
                   FROM     a
                            JOIN b ON a.cv = b.cv
                 ),
            x0
              AS ( SELECT   z ,
                            ( SELECT    cv + ','
                              FROM      x1
                              WHERE     z = t1.z
                              ORDER BY  z
                            FOR
                              XML PATH('')
                            ) AS l
                   FROM     x1 t1
                   GROUP BY z
                 )
        SELECT  LEFT(l, LEN(l) - 1) AS vs
        FROM    x0;
    vs
    --------------------------------------------- 01,04,05 (1 行受影响)
  • 相关阅读:
    剩下的树
    守形数
    小白鼠排队(map容器插入数据的四种方法)
    字母统计
    与7无关的数
    ZOJ
    基于js的CURD插件
    API验证插件
    Django之权限管理插件
    Django之信号和序列化
  • 原文地址:https://www.cnblogs.com/zhaoshujie/p/9594657.html
Copyright © 2011-2022 走看看