0

suppose I have a table, mydata, that has a column xmldata whose values are text in XML format such as

<maindataheading>
    <firstleveldata>
        <pricedata pricetype="normal">123</pricedata>
    </firstleveldata>
</maindataheading>

how do I extract <pricedata pricetype="normal">123</pricedata> from the xmldata column?

user571099
  • 1,491
  • 6
  • 24
  • 42

2 Answers2

0

Below is sample SQL for retrieving a varchar value from XML:

DECLARE @MyXmlData XML

-- Read XML data into variable
 SELECT @MyXmlData = xmldata
   FROM MyData

-- Check if the XML node exists before attempting to retrieve it
IF @MyXmlData.exist('/maindataheading/firstleveldata/pricedata') = 1
BEGIN
    DECLARE @MyDataValue VARCHAR(255)

    -- Get specific XML data
     SELECT @MyDataValue = ParamValues.ID.Value('.', 'varchar(255)')
       FROM @MyXmlData.nodes('/maindataheading/firstleveldata/pricedata') AS ParamValues(ID)

    IF @MyDataValue IS NOT NULL
    BEGIN
        -- Do something with data
    END
END
Kevin Hogg
  • 1,771
  • 25
  • 34
0
select xmldata.query('/maindataheading/firstleveldata/pricedata')
from mydata

Result:

<pricedata pricetype="normal">123</pricedata>
Mikael Eriksson
  • 136,425
  • 22
  • 210
  • 281