[英]Check if value exists in xml node
我有以下XML
<?xml version="1.0"?>
<ArrayOfInt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="id">
<int>984026</int>
<int>1005222</int>
</ArrayOfInt>
我將其傳遞給具有XML參數的存儲過程。
我想從xml文檔返回ID在int節點中的所有行
SELECT * FROM
MyTable
WHERE
MyTable.Id IN @XMLDoc.value('(.)[1]', 'int')
僅當我在xml中發送一個int時這才有效
<?xml version="1.0"?>
<ArrayOfInt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="id">
<int>984026</int>
</ArrayOfInt>
但是,如果我使用兩個int節點運行此命令,則sql將節點連接在一起
The conversion of the nvarchar value '9840261005222' overflowed an int column.
declare @XMLDoc xml = '<?xml version="1.0"?>
<ArrayOfInt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="id">
<int>984026</int>
<int>1005222</int>
</ArrayOfInt>'
;WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema-instance' as xsi ,
'id' as ns2,
DEFAULT 'id')
SELECT MT.*
FROM MyTable
join @XMLDoc.nodes('/ArrayOfInt/int') T(z)
on MT.ID = T.z.value('.','int')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.