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函数的实现方法

  • 相关阅读:
    基础 之 数组
    记录某个进程任意的采集时间内,top 10 的cpu和内存值的平均和求和
    8、广度优先搜索
    7、散列表
    计算机网络之从接入网到互联网
    计算机网络
    15、python之导入模块
    14、函数之匿名函数(lambda)
    13、python中的函数(闭包与装饰器)
    6、快速排序
  • 原文地址:https://www.cnblogs.com/liu-shiliu/p/5549586.html
Copyright © 2011-2022 走看看