acceder a datos en las columnas XML de SQL Server
SQL Server permite almacenar datos XML en columnas definidas como tipos de datos XML. La recuperación de datos específicos de estas columnas requiere consultas especializadas.
digamos que tiene una columna XML llamada "roles" con esta estructura:
Alpha Beta Gamma
Para encontrar filas que contengan un rol en particular, use esta consulta:
SELECT
Roles
FROM
MyTable
WHERE
Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor'
esto usa roles.value
para extraer el primero rol
el valor del elemento, convirtiéndolo en varchar (max)
. Esto permite buscar roles específicos.
Si su columna ya no es un tipo de datos XML, use cast
para convertirlo antes de consultar.
La consulta también puede apuntar a los atributos XML. Por ejemplo, con este XML en la columna "Datos":
para obtener filas donde codesystem
es "2":
SELECT
[data]
FROM
[dbo].[CodeSystemCodes_data]
WHERE
CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@CodeSystem)[1]', 'varchar(max)') = '2'
para consultar XML más avanzado en t-sql, ver:
alternativamente, Cross aplicar
ofrece más flexibilidad para buscar múltiples elementos de "rol":
SELECT *
FROM
(
SELECT
pref.value('(text())[1]', 'varchar(32)') AS RoleName
FROM
MyTable
CROSS APPLY
Roles.nodes('/root/role') AS Roles(pref)
) AS Result
WHERE
RoleName LIKE '%ga%'
Este enfoque permite una extracción más eficiente y específica de datos de las columnas XML en el servidor SQL.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3