«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как запросить значение столбца XML в SQL Server?

Как запросить значение столбца XML в SQL Server?

Опубликовано в 2025-04-19
Просматривать:678

How to Query Values within XML Columns in SQL Server?

доступ к данным в столбцах SQL Server XML

]

SQL Server позволяет хранить данные XML в столбцах, определенных как типы данных XML. Получение конкретных данных из этих столбцов требует специализированных запросов.

]

скажем, у вас есть столбец XML с именем «Роли» с этой структурой:

AlphaBetaGamma

, чтобы найти строки, содержащие определенную роль, используйте этот запрос:

]
SELECT
  Roles
FROM
  MyTable
WHERE
  Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor'
]

это использует rooles.value для извлечения первого lecle значения элемента, преобразование его в varchar (max) . Это позволяет искать конкретные роли.

]

Если ваш столбец уже не является типом данных XML, используйте CAST , чтобы преобразовать его перед запросом.

]

запрос также может нацелиться на атрибуты XML. Например, с этим XML в столбце «Data»:

]
для получения рядов, где

codeSystem - "2": ]

SELECT
  [data]
FROM
  [dbo].[CodeSystemCodes_data]
WHERE
  CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@CodeSystem)[1]', 'varchar(max)') = '2'
для более продвинутого XML-запроса в T-SQL, см.:

]

]
  • запрос поля XML с использованием t-sql ]
  • выравнивание данных XML в SQL Server ]
  • ]
Альтернативно,

Cross Apply предлагает большую гибкость для поиска множества «роли» элементов: ]

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%'
Этот подход позволяет получить более эффективную и целевую извлечение данных из столбцов XML в SQL Server.

]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3