I have XML coming in as the input, but I'm unclear on how I need to setup the data and statement to get the values from it. My XML is as follows:
<Keys>
<key>246</key>
<key>247</key>
<key>248</key>
</Keys>
And I want to do the following (is simplified to get my point across)
Select *
From Transaction as t
Inner Join @InputXml.nodes('Keys') as K(X)
on K.X.value('@Key', 'INT') = t.financial_transaction_grp_key
Can anyone provide how I would do that? What would my 3rd/4th line in the SQL look like? Thanks!
From your code I assume this is SQL-Server but you added the tag
[mysql]
...For your next question please keep in mind, that it is very important to know your tools (vendor and version).
Assuming
T-SQL
and[sql-server]
(according to the provided sample code) you were close:What was wrong:
.nodes()
must go down to the repeating element, which is<key>
.value()
you are using the path@Key
, which is wrong on two sides: 1)<key>
is an element and not an attribute and 2) XML is strictly case-sensitive, soKey!=key
.An alternative might be this:
Which one is faster depends on the count of rows in your source table as well as the count of keys in your XML. Just try it out.