I am trying to remove a few attributes from XML, but the attribute name is dynamic and is a calculated field in the table
This is my test SQL, and it works when I hard-code the attribute name:
But what I actually need is something like this:Code:DECLARE @XML XML = '<DataGridView_Data> <Row_Data Row_Index="1" Value_56="123" Value_57="dfgsd" Value_60="True" Value_71="78bfc25b-0af0-4bd2-841b-d66cbce13858|2|2023-03-22T14:25:52.8723830-04:00|1" Value_75="1|30|2023-03-22T14:25:53.5222980-04:00" /> <Row_Data Row_Index="2" Value_56="343" Value_57="sdfg" Value_60="False" Value_71="78bfc25b-0af0-4bd2-841b-d66cbce13858|2|2023-03-22T14:26:09.7227704-04:00|1" Value_75="1|30|2023-03-22T14:26:07.3063956-04:00" /> <Row_Data Row_Index="3" Value_56="jsygfjdalg" Value_57="" Value_60="False" Value_71="78bfc25b-0af0-4bd2-841b-d66cbce13858|2|2023-06-09T16:39:42.6530859-04:00|1" /> <Row_Data Row_Index="4" Value_56="adgdsfg" Value_57="" Value_60="False" /> <Row_Data Row_Index="5" Value_56="sdfg" Value_57="" Value_60="False" /> <Row_Data Row_Index="6" Value_56="dsfg" Value_57="" Value_60="False" Value_71="78bfc25b-0af0-4bd2-841b-d66cbce13858|2|2023-06-09T16:39:44.9092913-04:00|1" /> <Row_Data Row_Index="7" Value_56="dsfg" Value_57="" Value_60="False" /> <Row_Data Row_Index="8" Value_56="sdfgds" Value_57="" Value_60="False" Value_71="78bfc25b-0af0-4bd2-841b-d66cbce13858|2|2023-06-09T16:39:46.4054980-04:00|1" /> <Row_Data Row_Index="9" Value_56="fg" Value_57="" Value_60="False" Value_71="78bfc25b-0af0-4bd2-841b-d66cbce13858|2|2023-06-09T16:39:49.4204060-04:00|1" /> <Row_Data Row_Index="10" Value_56="dsfg" Value_57="" Value_60="False" Value_71="78bfc25b-0af0-4bd2-841b-d66cbce13858|2|2023-06-09T16:39:51.7429717-04:00|1" /> </DataGridView_Data>' DECLARE @tbl TABLE (col XML, ID INT, remove_item_name VARCHAR(100)) INSERT INTO @tbl VALUES (@XML, 5, 'Value_71') INSERT INTO @tbl VALUES (@XML, 5, 'Value_75') SELECT * FROM @tbl UPDATE tbl SET col.modify('delete /DataGridView_Data/Row_Data/@Value_71') FROM @tbl AS tbl WHERE ID = 5 SELECT * FROM @tbl
Which does not work, and I can't figure out how to make it workCode:SET col.modify('delete /DataGridView_Data/Row_Data/[sql:column("remove_item_name")]')


Reply With Quote