使用SQL Server"FOR XML":将结果数据类型转换为Text/varchar/string是什么?

tun*_*ish 4 xml sql-server lotus-domino

我现在已经挣扎了将近一周,仍然没有找到任何解决方案 - .-

我的目标是通过查询"FOR XML"语句从SQL Server接收XML,将此XML作为字符串/流转发到XSLT Transformer并将结果显示为HTML.

关于它的糟糕之处是我应该使用的Web服务器环境:IBM Domino 8.5.2,它通常使用Lotus Script和Lotus Notes数据库来生成网站.

但是现在Notes数据库的性能已经走到了死胡同,在谈论大型数据库时,比如我们的网站点击统计数据,这些数据库将数百万次点击存储为数据集.因此,我们决定迁移到mssql2008服务器,该服务器可以更快地提供自定义筛选结果.

我确实设法建立与SQL Server的连接,提交查询并将结果作为xml.但现在?:)似乎SQL Server提供了他的"for xml" - 结果作为一种自己奇怪的二进制编码字符数据类型,在打印它们或保存到文件时没有任何意义.Lotus Script(几乎是VBScript)似乎没有办法处理这个xml数据类型.

我尝试了各种方法,我可以找到结果 - Lotus构建在ODBC类,LCConnection通过OleDB,ADO连接通过OleDB ......但每次尝试都以一堆不可读的数据结束.

我可以想象多米诺骨牌和SQL Server之间的网络服务,将数据准备为我的多米诺骨牌脚本的字符串,但这是我想避免的不必要的开销.

你能在sql语句中告诉你想要生成的xml是什么数据类型吗?就像对于字段的cast()/ convert()而言,对于整个xml结果?这样我就可以将结果作为text/varchar字段读取?

谢谢,克里斯

小智 22

我知道我之前做过类似的事情,我认为这就是你所追求的:

SELECT CAST((SELECT [Columns] FROM [Tables] FOR XML PATH('')) AS VARCHAR(MAX)) AS XmlData
Run Code Online (Sandbox Code Playgroud)

这会将您生成的任何内容作为XML生成,而不是Lotus Notes可能接受的文本数据.

编辑:如果需要以其他样式生成XML,则可以更改FOR XML PATH('')FOR XML AUTO.

  • 请注意,此技术也适用于“FOR JSON PATH”。谢谢你的提示! (3认同)