Zugriff auf Daten in den XML -Spalten des SQL Servers
SQL Server ermöglicht das Speichern von XML -Daten in Spalten, die als XML -Datentypen definiert wurden. Das Abrufen spezifischer Daten aus diesen Spalten erfordert spezielle Abfragen.
Angenommen, Sie haben eine XML -Spalte mit dem Namen "Rollen" mit dieser Struktur:
Alpha Beta Gamma
um Zeilen zu finden, die eine bestimmte Rolle enthalten, verwenden Sie diese Abfrage:
SELECT
Roles
FROM
MyTable
WHERE
Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor'
Dies verwendet roles.value
, um die erste rollen
Element -Wert zu extrahieren, sie in varchar (max)
konvertieren. Dies ermöglicht die Suche nach bestimmten Rollen.
Wenn Ihre Spalte nicht bereits ein XML -Datentyp ist, verwenden Sie cast
, um sie vor der Abfrage zu konvertieren.
Die Abfrage kann auch auf XML -Attribute abzielen. Zum Beispiel mit dieser XML in der Spalte "Daten":
um Zeilen zu bekommen, wo codesystem
ist "2":
SELECT
[data]
FROM
[dbo].[CodeSystemCodes_data]
WHERE
CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@CodeSystem)[1]', 'varchar(max)') = '2'
Für erweiterte XML-Abfragen in T-SQL siehe:
Alternativ cross anwenden
bietet mehr Flexibilität für die Suche nach mehreren "Rolle" Elemente:
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%'
Dieser Ansatz ermöglicht eine effizientere und gezieltere Extraktion von Daten aus XML -Spalten in SQL Server.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3