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正則表達式入门
    Android
    centos改动sshport
    【iOS开发-59】LOL案例:单组tabView、alertView样式、实现监听,以及用reloadData数据刷新
    【Allwinner ClassA20类库分析】4.GPIO类的使用
    MvvmLight框架使用入门(四)
    MvvmLight框架使用入门(三)
    MvvmLight框架使用入门(二)
    MvvmLight框架使用入门(一)
    CEF 框架使用集锦
  • 原文地址:https://www.cnblogs.com/liu-shiliu/p/5549586.html
Copyright © 2011-2022 走看看