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

 

转载于:https://www.cnblogs.com/liu-shiliu/p/5549586.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值