|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Apr 2008
Messaggi: 5
|
[SQL] XML in sql
Ciao a tutti,
ho un xml da cui vorrei estrarre dei dati ma non riesco. Allego sotto il codice che utilizzo e che mi restituisce la colonna pod sempre con valori NULL, qualcuno mi sa spiegare il perchè? Grazie mille Nicola DECLARE @xmlDoc xml/* Carico l'intero file XML in una variabile XML */ SET @xmlDoc = ' <edi_l> <trader cdisp="DP1825"> <idimpp num="008701295368"> <hdr> <odn>1234567891234</odn> <pod>IT001E12345678</pod> <presa>23240412345678</presa> <cf> </cf> <piva>12345678912</piva> <tdoc>G</tdoc> <dat>01.10.2011</dat> <potf>0000016.5</potf> <potd>000000016.5</potd> <ta>0000380</ta> <opz>BTA</opz> <potm>C</potm> <potmax>000015.0</potmax> <abc>09.2011</abc> <bisc>09.2011</bisc> <tf>0000000000100.00</tf> <iauc>000000020.00</iauc> <icf>000000000.10</icf> <imis>00000009.90</imis> <ipot>000000040.00</ipot> <idis>000000020.00</idis> <itras>000000010.00</itras> </hdr> <dev> <abd>01.09.2011</abd> <bisd>30.09.2011</bisd> <mm>01051234</mm> <tm>Cont.Elettronico</tm> <nca>06.00</nca> <nf>3</nf> <k1>0000001.000</k1> <lett> <lea> <dlea>30.09.2011</dlea> <lat>000022768.000000</lat> <tla>L2</tla> <dlep>31.08.2011</dlep> <lpr>000021940.000000</lpr> <fascial>F1</fascial> </lea> <lea> <dlea>30.09.2011</dlea> <lat>000008424.000000</lat> <tla>L2</tla> <dlep>31.08.2011</dlep> <lpr>000008073.000000</lpr> <fascial>F2</fascial> </lea> <lea> <dlea>30.09.2011</dlea> <lat>000020024.000000</lat> <tla>L2</tla> <dlep>31.08.2011</dlep> <lpr>000019457.000000</lpr> <fascial>F3</fascial> </lea> </lett> </dev> <ea> <ab>01.09.11</ab> <bis>30.09.11</bis> <qta>000001746.0</qta> <fascia>F3</fascia> </ea> <pot> <qta>0000000.0</qta> <fascia>F1</fascia> <qta>0000000.0</qta> <fascia>F2</fascia> <qta>0000015.0</qta> <fascia>F3</fascia> <qta>0000000.0</qta> <fascia>F4</fascia> <mese>01</mese> </pot> <pot> <qta>0000000.0</qta> <fascia>F1</fascia> <qta>0000000.0</qta> <fascia>F2</fascia> <qta>0000015.0</qta> <fascia>F3</fascia> <qta>0000000.0</qta> <fascia>F4</fascia> <mese>02</mese> </pot> <pot> <qta>0000000.0</qta> <fascia>F1</fascia> <qta>0000000.0</qta> <fascia>F2</fascia> <qta>0000015.0</qta> <fascia>F3</fascia> <qta>0000000.0</qta> <fascia>F4</fascia> <mese>03</mese> </pot> <pot> <qta>0000000.0</qta> <fascia>F1</fascia> <qta>0000000.0</qta> <fascia>F2</fascia> <qta>0000015.0</qta> <fascia>F3</fascia> <qta>0000000.0</qta> <fascia>F4</fascia> <mese>04</mese> </pot> <pot> <qta>0000000.0</qta> <fascia>F1</fascia> <qta>0000000.0</qta> <fascia>F2</fascia> <qta>0000015.0</qta> <fascia>F3</fascia> <qta>0000000.0</qta> <fascia>F4</fascia> <mese>05</mese> </pot> <pot> <qta>0000000.0</qta> <fascia>F1</fascia> <qta>0000000.0</qta> <fascia>F2</fascia> <qta>0000015.0</qta> <fascia>F3</fascia> <qta>0000000.0</qta> <fascia>F4</fascia> <mese>06</mese> </pot> <pot> <qta>0000000.0</qta> <fascia>F1</fascia> <qta>0000000.0</qta> <fascia>F2</fascia> <qta>0000015.0</qta> <fascia>F3</fascia> <qta>0000000.0</qta> <fascia>F4</fascia> <mese>07</mese> </pot> <pot> <qta>0000000.0</qta> <fascia>F1</fascia> <qta>0000000.0</qta> <fascia>F2</fascia> <qta>0000015.0</qta> <fascia>F3</fascia> <qta>0000000.0</qta> <fascia>F4</fascia> <mese>08</mese> </pot> <pot> <qta>0000000.0</qta> <fascia>F1</fascia> <qta>0000000.0</qta> <fascia>F2</fascia> <qta>0000015.0</qta> <fascia>F3</fascia> <qta>0000000.0</qta> <fascia>F4</fascia> <mese>09</mese> </pot> </idimpp> </trader> </edi_l>' select @xmldoc select mycolumn.value( '@num', 'varchar(200)') as idfattura, mycolumn.value( '../@pod', 'varchar(200)') as pod from @xmldoc.nodes('/edi_l/trader/idimpp') as mytable(mycolumn) |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Apr 2008
Messaggi: 5
|
a chiunque interessasse: a furia di smanettare ho trovato la soluzione, che consiste nel modificare la query in questo modo:
select mycolumn.value('../@num', 'varchar(200)') as idfattura, mycolumn.value('pod[1]', 'varchar(200)') as pod from @xmldoc.nodes('/edi_l/trader/idimpp/hdr') as mytable(mycolumn) ciao a tutti |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:59.



















