--創建測試數據庫
create database testDb
go
use testDb
go
--新聞表
create table News
(
NeID int not null primary key identity(1,1),--新聞ID自增
NeTitle nvarchar(100) null,--標題
NeContent ntext null,--內容
NeCreateTime datetime null,--時間
NeTabIdStr nvarchar(200) null--標簽ID字符串(,)隔開
)
go
--新聞標簽表
create table NewsTab
(
NeTbId int not null primary key identity(1,1),--新聞標簽ID自增
NeTbName nvarchar(20) null,--標簽名稱
)
go
--插入新聞標簽測試數據
insert into NewsTab values ('行業新聞')
insert into NewsTab values ('媒體報道')
insert into NewsTab values ('今日頭條')
--插入新聞測試數據
insert into News values('測試數據1','測試數據內容1',GETDATE(),'1,3')
insert into News values('測試數據2','測試數據內容2',GETDATE(),'1,2,3')
insert into News values('測試數據3','測試數據內容3',GETDATE(),'3,2,1')
insert into News values('測試數據4','測試數據內容4',GETDATE(),'3')
go
--查詢逗號分隔的列表
select *,TabNameStr = STUFF(( SELECT ',' + NeTbName
FROM NewsTab
where PATINDEX('%,' + RTRIM(NewsTab.NeTbId) + ',%',',' + News.NeTabIdStr + ',')>0
ORDER BY PATINDEX('%,' + RTRIM(NewsTab.NeTbId) + ',%',',' + News.NeTabIdStr + ',')
FOR XML PATH('')), 1, 1,'') from News