доступ к данным в столбцах SQL Server XML
]SQL Server позволяет хранить данные XML в столбцах, определенных как типы данных XML. Получение конкретных данных из этих столбцов требует специализированных запросов.
]скажем, у вас есть столбец XML с именем «Роли» с этой структурой:
Alpha Beta Gamma
, чтобы найти строки, содержащие определенную роль, используйте этот запрос:
]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, см.: ]
] Альтернативно, 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