簡體   English   中英

從SQL SELECT中的XML字符串中提取元素值

[英]Extracting Element Value from XML String in SQL SELECT

我正在嘗試從SQL查詢中提取XML字符串中元素的值。 在下面的代碼中,OPDV.DialValue返回帶有要檢索的元素的XML字符串。

select OPDV.DialValue as DueDate           -- DialValue returns an XML string
from Orders O

join OrderProduct OP
    on OP.OrderID = O.OrderID

join OrderProductDialValue OPDV
    on OPDV.OrderProductID = OP.OrderProductID

join Dial_Culture DC
    on DC.DialID = OPDV.DialID

join Users U
    on U.UserID = O.CustomerID

where (O.OrderId = @OrderId) and (DC.FriendlyName = 'Due Date & Time')

這將返回下面的XML。 我必須在這里的代碼中包含注釋,因為標記消失了,只顯示數據。

<!--<DateTime><Server>03/04/2018 10:00:03</Server><Client>03/04/2018 10:00:00</Client><FriendlyDisplay>4/3/2018 10:00 AM</FriendlyDisplay></DateTime>-->

我需要從FriendlyDisplay中提取數據。 我可以用下面的代碼解析XML。 這將在2018年4月3日10:00 AM返回。

DECLARE @form XML = '<DateTime><Server>03/04/2018 10:00:03</Server><Client>03/04/2018 10:00:00</Client><FriendlyDisplay>4/3/2018 10:00 AM</FriendlyDisplay></DateTime>'

SELECT a.b.value('FriendlyDisplay[1]', 'varchar(100)')
    FROM @form.nodes('DateTime') a(b) 

我嘗試使用子查詢將XML字符串中的OPDV.DialValue替換為FriendlyValue,但沒有任何效果。 我不能在子查詢中聲明變量,即

select (declare @form xml=OPDV.DialValue; select ... )

SQL用於在Web應用程序中執行的功能。 有沒有辦法從FriendlyValue中提取文本?

謝謝。

如果我理解您的要求,那么您將嘗試從XML中獲取一個值並將其設置為變量。

DECLARE @form XML = '<DateTime><Server>03/04/2018 10:00:03</Server><Client>03/04/2018 10:00:00</Client><FriendlyDisplay>4/3/2018 10:00 AM</FriendlyDisplay></DateTime>'

DECLARE @MyDate DATETIME

SELECT @MyDate = a.b.value('FriendlyDisplay[1]', 'varchar(100)')
    FROM @form.nodes('DateTime') a(b) 

SELECT * FROM sometable WHERE someDate = @MyDate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM