2

我有这个查询:

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

它产生这个结果集:

CourseEventKey Titles
-------------- ----------------------------------
29             Test Facility 1
30             Memphis Training Room
32             Drury Inn & Suites Creve Coeur

数据是准确的,但我不能,FOR XML PATH('')因为它转义了某些特殊字符。

需要明确的是,我正在使用,FOR XML PATH('')因为具有相同的记录可能CourseEventKey有多个Facility与之关联的标题。

如何在不使用的情况下保留此查询返回的数据FOR XML PATH('')

4

1 回答 1

1

将“for xml path(''))”部分更改为“for xml path(''), root('root'), type).query('root').value ('.', 'varchar(max )')" 这将正确地取消转义字符。

很抱歉格式不好,但现在不在我的电脑上。如果你需要,我可以稍后给出一个完整的例子。

于 2014-04-18T00:04:32.920 回答