我在SQL Server中有一個包含SQL where子句的XML列。 我想用查詢結果替換特定的子字符串。 在下面的例子中,我想替換頁。[EconPeriodID] = 4 EconPeriod = '2011年1月' 和替換頁。[的BookID] = 2與預訂= '加拿大'如何用SQL Server中的查詢結果替換XML子字符串?
<Parameter Name="whereClause"
BaseType="nvarchar"
Precision="0"
Scale="0"
MaxLength="64"
>WHERE (p.[EconomicPeriodID] = 4 and p.[BookID] = 2)</Parameter>
我不使用CrossApply搜索,因爲我使用不同的參數返回多個消息。
完全以下查詢:
DECLARE @sdt_Date DATETIME
SET @sdt_Date = '3/17/2011'
SELECT name ,
submit_time ,
request,
CONVERT(VARCHAR, request.value(N'
(for $A in /ServiceProxy/Event/Parameters/Parameter
where $A/@Name ="valuationDate"
return $A/text())[1]
', 'datetime'), 111)
AS 'EOD Date' ,
request.query(N'
for $A in /ServiceProxy/Event/Parameters/Parameter
where $A/@Name ="whereClause"
return $A/text()
').value('.', 'varchar(max)') AS 'WHERE Clause'
FROM Requests
WHERE submit_time BETWEEN DATEADD(dd, 0,
DATEDIFF(dd, 0,
@sdt_Date))
AND DATEADD(dd, 1,
DATEDIFF(dd, 0,
@sdt_Date))
ORDER BY submit_time DESC
更新: 我使用跨應用和更改保存的查詢使用人類可讀的PARAMS之爭。 Cross Apply允許我在查詢中多次引用XML Shred,以便與Replace一起使用。
如果要更新SQL-Server中的XML實例,則必須使用某些沒有SQL標準功能或使用供應商特定的XML DML語言。 SQL-Server不支持XQuery更新工具,既不完全支持XQuery。 – 2011-03-22 02:59:30