(使用SQL Server 2016标准)
我的桌子"人物#34;我有一个NVARCHAR(MAX)字段,名为" Log"。
这是该日志中的内容示例:
<?xml version="1.0" encoding="iso-8859-1" ?>
<ArrayOfLogItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<LogItem>
<OldValue xsi:type="xsd:decimal">40</OldValue>
<NewValue xsi:type="xsd:decimal">41</NewValue>
<FieldName>age</FieldName>
</LogItem>
<LogItem>
<OldValue xsi:type="xsd:decimal">2000</OldValue>
<NewValue xsi:type="xsd:decimal">2100</NewValue>
<FieldName>salary</FieldName>
</LogItem>
<LogItem>
<OldValue xmlns:q1="http://microsoft.com/wsdl/types/" xsi:type="q1:guid">e5e6aa24-4f2f-437d-bf16-21724e9c61b2</OldValue>
<NewValue xmlns:q2="http://microsoft.com/wsdl/types/" xsi:type="q2:guid">370cee00-f51a-4bf0-a8bf-c0f1de025a0a</NewValue>
<FieldName>user_ID</FieldName>
</LogItem>
</ArrayOfLogItem>
我需要弄清楚,如果日志字段的行包含字段名&#34; salary&#34; - 如果是这样,我需要提取旧值(2000)和新值(2100)。
这可能吗?
这是我达到的目标......
DECLARE @xml xml
SET @xml =
'<?xml version="1.0" encoding="iso-8859-1" ?>
<ArrayOfLogItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<LogItem>
<OldValue xsi:type="xsd:decimal">40</OldValue>
<NewValue xsi:type="xsd:decimal">41</NewValue>
<FieldName>age</FieldName>
</LogItem>
<LogItem>
<OldValue xsi:type="xsd:decimal">2000</OldValue>
<NewValue xsi:type="xsd:decimal">2100</NewValue>
<FieldName>salary</FieldName>
</LogItem>
<LogItem>
<OldValue xmlns:q1="http://microsoft.com/wsdl/types/" xsi:type="q1:guid">e5e6aa24-4f2f-437d-bf16-21724e9c61b2</OldValue>
<NewValue xmlns:q2="http://microsoft.com/wsdl/types/" xsi:type="q2:guid">370cee00-f51a-4bf0-a8bf-c0f1de025a0a</NewValue>
<FieldName>user_ID</FieldName>
</LogItem>
</ArrayOfLogItem>'
SELECT ???
......我被困了。
有没有想过是否可能?
由于