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
次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
明らかに、これは、コンマを含む単一の値だけでなく、コンマを含むすべての値を選択します。
どんな援助も素晴らしいでしょう。