我在SQL Server 2005数据库中有一个表,可以按如下方式记录购买:
ID (PK, int, not null)
Request (text, null)
Response (text, null)
MerchantId (varchar(14), null)
Amount (money, null)
请求和响应字段实际上存储XML。我无法将数据类型更改为XML。我需要绘制一个查询,除了表中的数据外,还将从2个text-as-XML字段中获取数据。
我不知道从哪里开始。我的大多数搜索回来都有关于LINQ-to-SQL的问题,而我得到的SQLXML结果似乎无法处理数据集。我应该把注意力集中在哪里?
答案 0 :(得分:4)
使用CAST(文本AS XML)获取可在服务器上操作的XML类型列(使用值,节点和查询xml methods)。
SELECT ID,
CAST(Request AS XML) As RequestXml,
CAST(Request AS XML) As ResponsetXml,
MerchantId,
Amount
FROM <table>
如果您只需要客户端中的XML,那么您只需返回文本然后使用您选择的客户端XML技术(XmlDocument,XPathDocument,Linq 2 xml) all 允许您从字符串中构造片段。
答案 1 :(得分:2)
您可以动态投射数据,例如:
CAST(Request AS XML)
答案 2 :(得分:2)
SELECT request.VALUE(/xpath/query)
FROM
(
SELECT
CAST(Request as XML) request,
CAST(Response as XML) response
FROM purchaseTbl
WHERE ...
) tbl
WHERE ...
答案 3 :(得分:0)
您始终可以CAST( [Request] AS XML )
然后使用所有常规XML函数从中提取数据。
答案 4 :(得分:0)
如果您正在使用SQL服务器(2005年起),一种可能性是以.Net语言编写用户定义的函数,该函数从字段中解析XML并将该数据作为查询的一部分返回