"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo consultar el valor de una columna XML en SQL Server?

¿Cómo consultar el valor de una columna XML en SQL Server?

Publicado el 2025-04-19
Navegar:559

How to Query Values within XML Columns in SQL Server?

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:

AlphaBetaGamma

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.

Último tutorial Más>

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