xml形式のデータベースを取得し、特定の文字が見つかった場合は2つの属性値を反転するクエリを作成しようとしています。例えばので:xQueryのスワップ属性の値
<people>
<person name="Alice" age="20" team="developer" dep="red" version="old" />
<person name="Sam" age="23" team="marketing" dep="blue" version="old" />
<person name="Bob" age="21" team="sales" dep="green" version="new" />
</people>
がversion="old"
場合、私はチームと色の属性を反転します。だからアリスは次のようになります:
<person name="Alice" age="20" team="red" dep="developer" version="new" />
私は「古い」だけの行を返すデータベースを持っていますが、属性を置き換える方法はわかりません。あなたのSQL/XQueryのミックスは、XQueryのネイティブアップデート機能を使用している場合
UPDATE mDB
SET people.modify('
for $p in (/people/person)
let $team := $p/@team
let $dep := $p/@dep
replace value of node
$p/@dep
with
$team
replace value of node
$p/@team
with
$dep
')
FROM mDB
WHERE people.exist('
for $p in (/people/person)
where contains(data($p/@version), "old")
return data($person/@version)') != 0
? 「SQL」はクエリ言語であり、特定のデータベース製品の名前ではありません。 –
@a_horse_with_no_name SQL 2014 Service Pack 1を使用していますが、それは役に立ちますか? – moiraghan
@a_horse_with_no_nameはい私はあります!申し訳ありません – moiraghan