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 に答える