sql-server – 使用SQL Server“FOR XML”:将结果数据类型转换为Text / varchar / string是什么?

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

我的目标是通过查询“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字段读取?

谢谢,克里斯

解决方法

我知道我以前做过这样的事情,我认为这就是你所追求的:
SELECT CAST((SELECT [Columns] FROM [Tables] FOR XML PATH('')) AS VARCHAR(MAX)) AS XmlData

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

编辑:如果需要以另一种样式生成XML,可以将FOR XML PATH(”)更改为FOR XML AUTO.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...