Sql-Server
從 xml 列中提取整數值
我只是想知道如何從 XML 列中提取整數。目前所有數字都是 4,下面的查詢可以做到。但是這個數字很快就會增長到 10,000 個,這意味著 5 位數,這個查詢將無法做到這一點。無論如何,我可以動態地從 Xml 列的中間
<siteID>
和中間取出任何整數。</siteID>
任何建議將不勝感激。SELECT SUBSTRING(msg, patindex('%[0-9][0-9][0-9][0-9]</siteID>%',msg),4) AS DOMAIN FROM table a(NOLOCK) WHERE msg like '<DLR%' ORDER BY 1 DESC
您應該使用 XML 數據類型的value() 方法。
如果您的 XML 結構如下所示:
<DLR> <siteID>12345</siteID> </DLR>
您的查詢將是
select msg.value('(/DLR/siteID/text())[1]', 'int') as DOMAIN from dbo.YourTable
但它看起來根本不像您有一個 XML 列,因為它對 XML 列
msg like '<DLR%'
無效。然後您需要修改您的表以使該列是 XML,或者您可以在查詢中轉換為 XML。
select cast(msg as xml).value('(/DLR/siteID/text())[1]', 'int') as DOMAIN from dbo.YourTable