简体   繁体   English

查询从包含XML格式数据的列中提取值

[英]query for extracting values from a column containing data in XML format

suppose I have a table, mydata , that has a column xmldata whose values are text in XML format such as 假设我有一个表mydata ,它具有一个xmldata列,其值是XML格式的文本,例如

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

how do I extract <pricedata pricetype="normal">123</pricedata> from the xmldata column? 如何从xmldata列中提取<pricedata pricetype="normal">123</pricedata>

Below is sample SQL for retrieving a varchar value from XML: 以下是用于从XML检索varchar值的示例SQL:

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
select xmldata.query('/maindataheading/firstleveldata/pricedata')
from mydata

Result: 结果:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM