Heim >Datenbank >MySQL-Tutorial >Wie frage ich Werte in XML-Spalten in SQL Server ab?
Zugriff auf Daten in den XML-Spalten von SQL Server
SQL Server ermöglicht das Speichern von XML-Daten in Spalten, die als XML-Datentypen definiert sind. Das Abrufen spezifischer Daten aus diesen Spalten erfordert spezielle Abfragen.
Angenommen, Sie haben eine XML-Spalte mit dem Namen „Rollen“ und dieser Struktur:
<code class="language-xml"><root><role>Alpha</role><role>Beta</role><role>Gamma</role></root></code>
Um Zeilen zu finden, die eine bestimmte Rolle enthalten, verwenden Sie diese Abfrage:
<code class="language-sql">SELECT Roles FROM MyTable WHERE Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'StringToSearchFor'</code>
Dabei wird Roles.value
verwendet, um den Wert des ersten role
-Elements zu extrahieren und ihn in varchar(max)
umzuwandeln. Dies ermöglicht die Suche nach bestimmten Rollen.
Wenn Ihre Spalte noch kein XML-Datentyp ist, verwenden Sie CAST
, um sie vor der Abfrage zu konvertieren.
Die Abfrage kann auch auf XML-Attribute abzielen. Zum Beispiel mit diesem XML in der Spalte „Daten“:
<code class="language-xml"><utilities.codesystems.codesystemcodes ....="" code="0001F" codesystem="2" codetags="-19-" iid="107"></utilities.codesystems.codesystemcodes></code>
Um Zeilen zu erhalten, in denen CodeSystem
„2“ ist:
<code class="language-sql">SELECT [data] FROM [dbo].[CodeSystemCodes_data] WHERE CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@CodeSystem)[1]', 'varchar(max)') = '2'</code>
Weitere Informationen zu erweiterten XML-Abfragen in T-SQL finden Sie unter:
Alternativ bietet CROSS APPLY
mehr Flexibilität für die Suche nach mehreren „Rollen“-Elementen:
<code class="language-sql">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%'</code>
Dieser Ansatz ermöglicht eine effizientere und gezieltere Extraktion von Daten aus XML-Spalten in SQL Server.
Das obige ist der detaillierte Inhalt vonWie frage ich Werte in XML-Spalten in SQL Server ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!