sql server读取没有内部标记的xml

时间:2016-12-06 10:35:43

标签: sql sql-server xml tags

我正在阅读xml,但是当我想要在没有内部(子)标签的情况下阅读它时,我遇到了问题。 例如:

DECLARE @XMLToParse  XML

SET @XMLToParse =   '<Animals>
                       <LandAnimals>
                        <Animal>Baboon</Animal>
                        <Animal>Yak
                            <d>asd</d>
                        </Animal>
                        <Animal>Zebra</Animal>
                       </LandAnimals>
                    </Animals>'

SELECT  xmlData.A.value('.', 'VARCHAR(100)') AS Animal
FROM    @XMLToParse.nodes('Animals/LandAnimals/Animal') xmlData(A)

此查询提取第二条记录'Yak asd',但我只需要'Yak'。 我该如何解决?

谢谢。!

2 个答案:

答案 0 :(得分:2)

更改.value()上的来电以获取text()

SELECT  xmlData.A.value('(./text())[1]', 'VARCHAR(100)') AS Animal
FROM    @XMLToParse.nodes('Animals/LandAnimals/Animal') xmlData(A)

答案 1 :(得分:2)

指定text()

SELECT  xmlData.A.value('./text()[1]', 'VARCHAR(100)') AS Animal
FROM    @XMLToParse.nodes('Animals/LandAnimals/Animal') xmlData(A)