Keh*_*mme 7 xml sql-server concat
我有这个查询:
SELECT DISTINCT
f1.CourseEventKey,
STUFF
(
(
SELECT
'; ' + Title
FROM
(
SELECT DISTINCT
ces.CourseEventKey,
f.Title
FROM
CourseEventSchedule ces
INNER JOIN Facility f
ON f.FacilityKey = ces.FacilityKey
WHERE
ces.CourseEventKey IN
(
SELECT CourseEventKey
FROM @CourseEvents
)
) f2
WHERE
f2.CourseEventKey = f1.CourseEventKey
FOR XML PATH('')
)
, 1, 2, '')
FROM
(
SELECT DISTINCT
ces.CourseEventKey,
f.Title
FROM
CourseEventSchedule ces
INNER JOIN Facility f
ON f.FacilityKey = ces.FacilityKey
WHERE
ces.CourseEventKey IN
(
SELECT CourseEventKey
FROM @CourseEvents
)
) f1;
Run Code Online (Sandbox Code Playgroud)
它产生这个结果集:
SELECT DISTINCT
f1.CourseEventKey,
STUFF
(
(
SELECT
'; ' + Title
FROM
(
SELECT DISTINCT
ces.CourseEventKey,
f.Title
FROM
CourseEventSchedule ces
INNER JOIN Facility f
ON f.FacilityKey = ces.FacilityKey
WHERE
ces.CourseEventKey IN
(
SELECT CourseEventKey
FROM @CourseEvents
)
) f2
WHERE
f2.CourseEventKey = f1.CourseEventKey
FOR XML PATH('')
)
, 1, 2, '')
FROM
(
SELECT DISTINCT
ces.CourseEventKey,
f.Title
FROM
CourseEventSchedule ces
INNER JOIN Facility f
ON f.FacilityKey = ces.FacilityKey
WHERE
ces.CourseEventKey IN
(
SELECT CourseEventKey
FROM @CourseEvents
)
) f1;
Run Code Online (Sandbox Code Playgroud)
数据是准确的,但我不能,FOR XML PATH('')
因为它会转义某些特殊字符。
需要明确的是,我使用的FOR XML PATH('')
是因为相同的记录可能CourseEventKey
有多个Facility
与之关联的标题。
如何在不使用的情况下保留此查询返回的数据FOR XML PATH('')
?
Mar*_*son 14
尝试更改您的语句以匹配此内容:
FOR XML PATH(''), TYPE).value('(./text())[1]','varchar(max)')
Run Code Online (Sandbox Code Playgroud)
这使用该.value xml
方法来解决您的实体化问题。