1

XML の専門家が簡単な質問に答えてくれることを願っています。以下の XML スキーマとデータを 1 つのレコードに含む XML 型の列を持つ次のテーブルがあります。

INSERT INTO XMLTEST (testXML)
values ('<R>
  <P N="Status" V="&#xD;&#xA;Draft&#xD;&#xA;" />
  <P N="Approved For Publishing" V="&#xD;&#xA;T&#xD;&#xA;" />
  <P N="Concealed From Publishing" V="&#xD;&#xA;F&#xD;&#xA;" />
  <P N="Management System" V="&#xD;&#xA;OMS&#xD;&#xA;BMS&#xD;&#xA;" />
</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 
4

2 に答える 2