Ich habe folgendes XML in einer XML-Spalte (aufgerufen Roles
) in einer SQL Server-Datenbank gespeichert.
<root>
<role>Alpha</role>
<role>Beta</role>
<role>Gamma</role>
</root>
Ich möchte alle Zeilen auflisten, die eine bestimmte Rolle in ihnen haben. Diese Rolle wird vom Parameter übergeben.
sql
sql-server
xml
xquery
Bistro
quelle
quelle
[1]
Ihre Antwort?[1]
war eine wirklich gute Frage. Dies bedeutet, dass Sie den ersten Rollenwert aus dem XML auswählen. Dies bedeutet, dass dies nur zum AuffindenAlpha
in Ihrer Beispiel-XML funktioniert . Die Zeile wird nicht gefunden, wenn Sie nach suchenBeta
.Wenn Sie möchten, dass die Abfrage so funktioniert, wie
where col like '%Beta%'
Sie sie verwenden könnencontains
quelle
Wenn Ihr Feldname Rollen und der Tabellenname Tabelle1 ist, können Sie Folgendes zur Suche verwenden
quelle
like
?forexample /root/role like ....
.value('(/root/role)[1]', 'varchar(max)') like '%yourtext%'
stattexists
wie Leniel erklärte@Role
.Ich habe mir unten eine einfache Arbeit ausgedacht, an die man sich auch leicht erinnern kann :-)
quelle
Sie könnten Folgendes tun
Offensichtlich ist dies ein kleiner Hack und ich würde es für keine formalen Lösungen empfehlen. Ich finde diese Technik jedoch sehr nützlich, wenn Ad-hoc-Abfragen für XML-Spalten in SQL Server Management Studio für SQL Server 2012 durchgeführt werden.
quelle
Nützlicher Tipp. Fragen Sie einen Wert in der SQL Server-XML-Spalte ab (XML mit Namespace).
z.B
zB XML in Parametern:
zB Abfrage:
quelle
Ich habe die folgende Anweisung verwendet, um die Werte im XML in der SQL-Tabelle abzurufen
quelle
Sie können das gesamte Tag oder nur den spezifischen Wert abfragen. Hier verwende ich einen Platzhalter für die XML-Namespaces.
quelle