XML の専門家が簡単な質問に答えてくれることを願っています。以下の XML スキーマとデータを 1 つのレコードに含む XML 型の列を持つ次のテーブルがあります。
INSERT INTO XMLTEST (testXML)
values ('<R>
<P N="Status" V="
Draft
" />
<P N="Approved For Publishing" V="
T
" />
<P N="Concealed From Publishing" V="
F
" />
<P N="Management System" V="
OMS
BMS
" />
</R>')
'Approved For Publishing' 値を条件付きで F に置き換える必要があります。V 値を変更する前に、最初に xml 行の N 値名を確認するのが最善だと思いました。以下のSQLを機能させようとしましたが、うまくいきませんでした。誰かが間違っていることを指摘するのを助けることができますか?
DECLARE @myDoc xml
SET @myDoc = (SELECT TOP 1 CAST(testXML AS VARCHAR(MAX)) FROM XMLTEST)
Select @myDoc
SET @myDoc.modify('
replace value of (/R/P/@V)[1]
with (
if (/R/P/N = ''Approved For Publishing'') then
"F"
else
"T"
)
')
SELECT @myDoc