Keh*_*mme 7 sql t-sql sql-server escaping for-xml-path
我有这个问题:
SELECT DISTINCT
f.CourseEventKey,
(
SELECT f.Title + '; ' AS [text()]
FROM @Facilities
WHERE CourseEventKey = f.CourseEventKey
ORDER BY f.Title
FOR XML PATH('')
) Facilities
FROM @Facilities f
Run Code Online (Sandbox Code Playgroud)
它产生这个结果集:
CourseEventKey Facilities
-------------- -----------------------------------
29 Test Facility 1;
30 Memphis Training Room;
32 Drury Inn & Suites Creve Coeur;
Run Code Online (Sandbox Code Playgroud)
数据很好,但&实际上是编码的&,不适合我的目的.
如何修改此查询以返回数据中特殊字符的原始值?
Bao*_*dad 12
使用,TYPE).value('.','NVARCHAR(MAX)')和您的特殊字符不会被转义:
SELECT DISTINCT
f.CourseEventKey,
(
SELECT f.Title + '; ' AS [text()]
FROM @Facilities
WHERE CourseEventKey = f.CourseEventKey
ORDER BY f.Title
FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)')
AS Facilities
FROM @Facilities f
Run Code Online (Sandbox Code Playgroud)
归功于Rob Farley.
更新:
我刚刚听说过这种新方法.我还没有彻底测试它,并希望得到任何反馈.我们可以更换[text()]使用[processing-instruction(x)],这样
select 'hello & there >' as [processing-instruction(x)] FOR XML PATH('')
Run Code Online (Sandbox Code Playgroud)
将返回
<?x hello & there >?>
Run Code Online (Sandbox Code Playgroud)
我们只需要脱掉它 <? ... ?>
| 归档时间: |
|
| 查看次数: |
3840 次 |
| 最近记录: |