正在更新 XML 数据 SQL 服务器中的 JSON 值
Updating JSON value in XML data SQL Server
我有一个简单的 XML,其中包含 JSON 作为值。
<Columns>
<Column Name="SID2" DataType="String">[{"LastUpdatedUtc":"2021-01-28T11:36:33.407"]</Column>
</Columns>
我正在尝试更新 XML 数据中的 json 值。名称是动态的,必须在变量中创建。我正在尝试 SQL 来更新数据,但没有成功。我认为它没有解析其中的 @SID,不确定如何使其工作。
DECLARE @SID NVARCHAR(MAX) = 'SID2';
DECLARE @NewContent NVARCHAR(MAX) = '[{"LastUpdatedUtc":"'+CONVERT(varchar,GETUTCDATE(),126)+'"]';
UPDATE ABC
SET XML_DATA.modify('replace value of (/Columns/Column[@Name="{sql:variable("@SID")}"]/text()) [1] with sql:variable("@NewContent")')
您需要一点零钱:
DECLARE @xml XML
SET @xml = '
<Columns>
<Column Name="SID2" DataType="String">[{"LastUpdatedUtc":"2021-01-28T11:36:33.407"]</Column>
</Columns>
'
SELECT @xml AS Before
DECLARE @SID NVARCHAR(MAX) = 'SID2';
DECLARE @NewContent NVARCHAR(MAX) = '[{"LastUpdatedUtc":"'+CONVERT(varchar,GETUTCDATE(),126)+'"]';
SET @xml.modify('
replace value of (/Columns/Column[@Name=sql:variable("@SID")]/text())[1]
with sql:variable("@NewContent")
')
SELECT @xml AS After
结果:
Before
<Columns><Column Name="SID2" DataType="String">[{"LastUpdatedUtc":"2021-01-28T11:36:33.407"]</Column></Columns>
After
<Columns><Column Name="SID2" DataType="String">[{"LastUpdatedUtc":"2021-01-28T13:10:24.850"]</Column></Columns>
我有一个简单的 XML,其中包含 JSON 作为值。
<Columns>
<Column Name="SID2" DataType="String">[{"LastUpdatedUtc":"2021-01-28T11:36:33.407"]</Column>
</Columns>
我正在尝试更新 XML 数据中的 json 值。名称是动态的,必须在变量中创建。我正在尝试 SQL 来更新数据,但没有成功。我认为它没有解析其中的 @SID,不确定如何使其工作。
DECLARE @SID NVARCHAR(MAX) = 'SID2';
DECLARE @NewContent NVARCHAR(MAX) = '[{"LastUpdatedUtc":"'+CONVERT(varchar,GETUTCDATE(),126)+'"]';
UPDATE ABC
SET XML_DATA.modify('replace value of (/Columns/Column[@Name="{sql:variable("@SID")}"]/text()) [1] with sql:variable("@NewContent")')
您需要一点零钱:
DECLARE @xml XML
SET @xml = '
<Columns>
<Column Name="SID2" DataType="String">[{"LastUpdatedUtc":"2021-01-28T11:36:33.407"]</Column>
</Columns>
'
SELECT @xml AS Before
DECLARE @SID NVARCHAR(MAX) = 'SID2';
DECLARE @NewContent NVARCHAR(MAX) = '[{"LastUpdatedUtc":"'+CONVERT(varchar,GETUTCDATE(),126)+'"]';
SET @xml.modify('
replace value of (/Columns/Column[@Name=sql:variable("@SID")]/text())[1]
with sql:variable("@NewContent")
')
SELECT @xml AS After
结果:
Before
<Columns><Column Name="SID2" DataType="String">[{"LastUpdatedUtc":"2021-01-28T11:36:33.407"]</Column></Columns>
After
<Columns><Column Name="SID2" DataType="String">[{"LastUpdatedUtc":"2021-01-28T13:10:24.850"]</Column></Columns>