Heim > Datenbank > MySQL-Tutorial > Wie frage ich nach bestimmten Werten innerhalb einer XML-Spalte in SQL Server?

Wie frage ich nach bestimmten Werten innerhalb einer XML-Spalte in SQL Server?

Linda Hamilton
Freigeben: 2025-01-13 12:35:13
Original
633 Leute haben es durchsucht

How to Query for Specific Values within an XML Column in SQL Server?

Extrahieren von Daten aus den XML-Spalten von SQL Server

Das effiziente Abrufen spezifischer Werte aus XML-Daten in SQL Server ist für die Datenanalyse von entscheidender Bedeutung. In dieser Anleitung wird gezeigt, wie bestimmte Werte in einer XML-Spalte abgefragt werden.

Stellen Sie sich eine XML-Spalte mit dem Namen „Rollen“ vor, in der XML gespeichert wird, das Benutzerrollen darstellt. Ein Beispiel-XML-Fragment könnte so aussehen:

<code class="language-xml"><root><role>Alpha</role><role>Beta</role><role>Gamma</role></root></code>
Nach dem Login kopieren

Um alle Zeilen zu finden, die eine bestimmte Rolle enthalten (z. B. „Gamma“), verwenden Sie diese T-SQL-Abfrage:

<code class="language-sql">SELECT
  Roles.value('(/root/role)[1]', 'varchar(max)')
FROM
  MyTable
WHERE
  Roles.value('(/root/role)[1]', 'varchar(max)') LIKE 'Gamma';</code>
Nach dem Login kopieren

Diese Abfrage verwendet die Funktion value(), um den ersten Rollennamen zu extrahieren, und verwendet LIKE für Teilübereinstimmungen. Denken Sie daran, dass hierbei davon ausgegangen wird, dass „Rollen“ vom XML-Datentyp sind. Andere Datentypen erfordern zunächst eine Konvertierung in XML.

Zugriff auf XML-Attribute

Wenn Sie ein bestimmtes Attribut aus einem XML-Element abfragen müssen, bleibt die Funktion value() Ihr Werkzeug, aber der XPath-Ausdruck ändert sich. Betrachten Sie beispielsweise dieses XML mit den Attributen:

<code class="language-xml"><utilities.codesystems.codesystemcodes code="0001F" codesystem="2" ... /></code>
Nach dem Login kopieren

Um den Attributwert „Codesystem“ ('2') abzurufen, verwenden Sie:

<code class="language-sql">SELECT
  CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@codesystem)[1]', 'varchar(max)')
FROM
  [dbo].[CodeSystemCodes_data]
WHERE
  CAST([data] AS XML).value('(/Utilities.CodeSystems.CodeSystemCodes/@codesystem)[1]', 'varchar(max)') = '2';</code>
Nach dem Login kopieren

Erweiterte XML-Abfragen

Für komplexere Szenarien, wie die Handhabung verschachtelter XML-Strukturen oder das Durchlaufen mehrerer Rollenelemente, erkunden Sie Techniken wie XML-Flattening und CROSS APPLY. Ausführliche Anleitungen zu diesen Methoden finden Sie in der erweiterten SQL Server XML-Dokumentation.

Das obige ist der detaillierte Inhalt vonWie frage ich nach bestimmten Werten innerhalb einer XML-Spalte in SQL Server?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage