sql - tabla - tipos de datos xml
SQL: ¿Cómo puedo obtener el valor de un atributo en el tipo de datos XML? (3)
Depende mucho de cómo esté consultando el documento. Sin embargo, puedes hacer esto:
CREATE TABLE #example (
document NText
);
INSERT INTO #example (document)
SELECT N''<email><account language="en" /></email>'';
WITH XmlExample AS (
SELECT CONVERT(XML, document) doc
FROM #example
)
SELECT
C.value(''@language'', ''VarChar(2)'') lang
FROM XmlExample CROSS APPLY
XmlExample.doc.nodes(''//account'') X(C);
DROP TABLE #example;
EDITAR después de los cambios a su pregunta.
Tengo el siguiente xml en mi base de datos:
<email>
<account language="en" ... />
</email>
Estoy usando algo como esto ahora: pero todavía tengo que encontrar el valor del atributo
SELECT
convert(xml,m.Body).query(''/Email/Account'')
FROM Mail
¿Cómo puedo obtener el valor del atributo de language
en mi declaración de selección con SQL?
Esto debería funcionar:
DECLARE @xml XML
SET @xml = N''<email><account language="en" /></email>''
SELECT T.C.value(''@language'', ''nvarchar(100)'')
FROM @xml.nodes(''email/account'') T(C)
Utilice XQuery:
declare @xml xml =
''<email>
<account language="en" />
</email>''
select @xml.value(''(/email/account/@language)[1]'', ''nvarchar(max)'')
declare @t table (m ntext)
insert @t values (''<email>
<account language="en" />
</email>''),
(''<email>
<account language="fr" />
</email>'')
select cast(m as xml) .value(''(/email/account/@language)[1]'', ''nvarchar(max)'' )
from @t
Salida:
en
fr