zoukankan      html  css  js  c++  java
  • for xml path

    测试建表

    create table WebNewsInfo
    (
    ID int identity(1,1),
    NewsTitle varchar(32) not null,
    HotFlag tinyint not null
    )
    alter table WebNewsInfo add constraint PK_WebNewsInfo_ID  primary key(ID)

    insert into WebNewsInfo values('测试1',1)
    insert into WebNewsInfo values('测试2',0)

    select * from WebNewsInfo


    要将两条数据合并成一条显示<p head="Hot" hcolor="0xffff00" content="测试1"/><p head="New" hcolor="0xffff00" content="测试2"/>,而且只显示出一条

    select (select '<p head="'+(CASE when HotFlag=1 THEN 'Hot' else 'New' END )
    +'" hcolor="0xffff00" content="'+NewsTitle+'"/>'
    from WebNewsInfo
    for xml path('')
    )
    from  WebNewsInfo 

    这样写会显示两条数据,而且> <都被转义了

    select '<p head="'+(CASE when HotFlag=1 THEN 'Hot' else 'New' END )
    +'" hcolor="0xffff00" content="'+NewsTitle+'"/>'
    from WebNewsInfo
    for xml path('')

    这样写> <都被转义了,而且是xml的形式

    select  stuff((select '<p head="'+(CASE when HotFlag=1 THEN 'Hot' else 'New' END )
    +'" hcolor="0xffff00" content="'+NewsTitle+'"/>'
    from WebNewsInfo
    for xml path('')),1, 0, '')

    这样写不是xml格式了,但是还是没有解决转义的问题

    select
    (
        select '<p head="'+(CASE when HotFlag=1 THEN 'Hot' else 'New' END )
        +'" hcolor="0xffff00" content="'+NewsTitle+'"/>'
        from WebNewsInfo
        FOR XML PATH(''),TYPE
    ).value('.','NVARCHAR(MAX)') --防止转义

    这样写就可以实现要求

     select stuff((select convert(varchar(20),ID)+':'+NewsTitle+';' from WebNewsInfo FOR XML PATH('')),1, 0, '')

    用这个语句可以实现列转行

    此外,要实现行转列,可以采用split函数的实现方法

  • 相关阅读:
    大端小端与数字的二进制存储
    java基础之进制转换汇总
    (转) tcp udp通讯协议
    JAVA Tcp Udp的通讯实现(转)
    ExecutorService创建线程使用 转()
    转:java中的位运算
    SVN服务器的搭建与TortoiseSVN的使用
    [Mark]VM Cone & Template
    [Mark]VM migrate
    [Mark] ethtool command in REHL OS
  • 原文地址:https://www.cnblogs.com/liu-shiliu/p/5549586.html
Copyright © 2011-2022 走看看