DECLARE @barcode XML

            SET @barcode = '<BCODES><BCODE>a</BCODE><BCODE>b</BCODE><BCODE>c</BCODE><BCODE>d</BCODE></BCODES>'

            --INSERT INTO #barcode
            SELECT      v.x.value('BCODE[1]','VARCHAR(15)') AS Barcodes
            FROM        @barcode.nodes('BCODES') v(x)

Resultado ->

Códigos de barras

Una

No puedo obtener b, cyd en la salida.

1
Dattatray Raj 14 nov. 2017 a las 09:59

2 respuestas

La mejor respuesta

Solo haz esto:

SELECT v.x.value('.','VARCHAR(15)') AS Barcodes
FROM @barcode.nodes('BCODES/BCODE') v(x)

La idea es primero obtener todos los nodos BCODE y luego extraer sus valores.

enter image description here

1
gotqn 14 nov. 2017 a las 07:04

Tu podrías intentar :

DECLARE @barcode XML;
SET @barcode = '<BCODES><BCODE>a</BCODE><BCODE>b</BCODE><BCODE>c</BCODE><BCODE>d</BCODE></BCODES>';

            --INSERT INTO #barcode

SELECT barcode = n.v.value('.[1]', 'NVARCHAR(128)')
FROM @barcode.nodes('BCODES/BCODE') AS n(v);

Resultado:

barcode 
a
b
c
d
0
Yogesh Sharma 14 nov. 2017 a las 07:06