XQuery Path – Quering XML database data type with SQL
E' possibile effettuare delle query XPath mediante SQL su campi di tipo XML.
Supponiamo di avere una tabella "Test" con un campo XML "de_xml" con il seguente XML:
<?xml version="1.0" encoding="utf-16"?>
<dati_xml>
<utente id="1">
<nome>Mario</nome>
<gruppo>Users</gruppo>
</utente>
</dati_xml>
La seguente XQuery
SELECT de_xml.query('data(/dati_xml/utente[@id="1"]/nome)')
FROM Test
ritornerà "Mario" come risultato.
Mentre la seguente query XQuery
SELECT de_xml.query('(/dati_xml/utente[@id="1"]/nome)')<br />
FROM Test
ritorna il nodo <nome>Mario</nome>
Nello snippet seguente viene illustrata la possibilità di effettuare delle query XPath in una query T-SQL su campi di tipo XML.
Supponiamo di avere una tabella sul database chiamata “Test” con una colonna di tipo XML chiamata “colonna_xml” con il seguente valore:
<?xml version="1.0" encoding="utf-16"?> <dati_xml> <utente id="1"> <nome>Mario</nome> <gruppo>Users</gruppo> </utente> </dati_xml>
La seguente XQuery
SELECT colonna_xml.query('data(/dati_xml/utente[@id="1"]/nome)') FROM Test
ritornerà “Mario” come risultato.
Mentre la seguente query XQuery
SELECT colonna_xml.query('(/dati_xml/utente[@id=&quot;1&quot;]/nome)') FROM Test
ritorna il nodo
Un altro esempio si XQuery Path è la seguente:
DECLARE @myXML2 XML SET @myXML2 = '<MyList> <item attributo1="value11" attributo2="value12" /> <item attributo1="value21" attributo2="value22" /> </MyList>' SELECT T.Item.value('@attributo1' , 'varchar(10)') AS Attributo1, T.Item.value('@attributo2' , 'varchar(10)') AS Attributo2 FROM @myXML2.nodes('//MyList/item') AS T(Item)
che restituisce la seguente tabella:
Attributo1 Attributo2
value11 value12
value21 value22
Lascia un commento