Heim > Datenbank > MySQL-Tutorial > Wie frage ich Werte in XML-Spalten in SQL Server ab?

Wie frage ich Werte in XML-Spalten in SQL Server ab?

DDD
Freigeben: 2025-01-13 12:08:44
Original
979 Leute haben es durchsucht

How to Query Values within XML Columns in SQL Server?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage