我有一个 SQL Server 2008 db 列,我们将调用 XMLDoc,它包含以下格式的 XML:
<XMLDoc xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.xxx.xxx.xxx">
<Node>
<SubNode>
<SubSubNode>Value, Value, Value</SubSubNode>
<IrrelevantNode></IrrelevantNode>
</SubNode>
...
SubSubNode
从 0 到 20+ 值的任何地方,以逗号分隔。单个值不应包含逗号,但与它们一起输入错误。例如,以下SubSubNode
是正确的:
<SubSubNode>Value, Value, Value</SubSubNode>
以下SubSubNode
是不正确的:
<SubSubNode>Value, </SubSubNode>
我需要用逗号查找并替换所有单个值的实例,以显示为:
<SubSubNode>Value</SubSubNode>
由于 SQL 不允许ends-with
, starts-with
, or matches
,我只能想出以下内容(这只是搜索值,我还没有进行替换):
with xmlnamespaces(default 'http://schemas.xxx.xxx.xxx')
select [XMLDoc].value('(/XMLDoc/Node/SubNode/SubSubNode)[1]','varchar(2000)')
from XMLDoc
where [XMLDoc].exist('/XMLDoc/Node/SubNode[1] [contains(SubSubNode[1],", ")]')=1
显然,这会选择所有带逗号的值,而不仅仅是带逗号的单个值。
任何帮助都会很棒。