码迷,mamicode.com
首页 > 数据库 > 详细

sql 使用 FOR XML PATH实现字符串拼接

时间:2015-03-14 18:30:47      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

sql中经常需要把多个行数据合成一行下面是利用 FOR XML PATH来实现的简单介绍。

1,把图一的转换为图二:

技术分享技术分享

1 SELECT articleID,
2 (SELECT CONVERT(varchar(10),tagID)+,  FROM articleTag_tb
3 FOR XML PATH(‘‘)) AS tagID FROM articleTag_tb GROUP BY articleID

以上是一个表的,下面看看多表关联的做法,其实是一样的只是连接表查询
这是一个文章对应多个标签的例子三张表:

CREATE TABLE [dbo].[article_tb](
    [articleID] [int] NULL,
    [articleName] [nvarchar](50) NULL
)

CREATE TABLE [dbo].[articleTag_tb](
    [articleID] [int] NULL,
    [tagID] [int] NULL
)

CREATE TABLE [dbo].[tag_tb](
    [tagID] [int] NULL,
    [tagName] [nvarchar](50) NULL
)

实现sql语句:

SELECT articleName,
(SELECT tagName+,FROM
(SELECT A.articleName,t.tagName FROM article_tb A
LEFT JOIN articleTag_tb AT ON AT.articleID=A.articleID
LEFT JOIN tag_tb T ON AT.tagID=T.tagID) temp
WHERE temp.articleName=TT.articleName
FOR XML PATH(‘‘)) AS tagName FROM article_tb TT

 

解释:
先把三个表做连接查询查找需要的字段,再用FOR XML PATH 自连接拼接字符串

三表连接查询结果为:              使用FOR XML PATH拼接后结果:

技术分享 技术分享

sql 使用 FOR XML PATH实现字符串拼接

标签:

原文地址:http://www.cnblogs.com/wuyubing/p/4337888.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!