local-name-Funktion (XQuery)
Gibt den lokalen Anteil des Namens von $arg als xs:string zurück. Dabei handelt es sich um eine Zeichenfolge mit der Länge null oder die lexikalische Form eines xs:NCName-Elements. Wenn das Argument nicht bereitgestellt wird, ist der Standardwert der Kontextknoten.
Syntax
fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string
Argumente
- $arg
Knotenname, dessen lokaler Namensanteil abgerufen wird.
Hinweise
In SQL Server kann fn:local-name() ohne Argument nur im Kontext eines kontextabhängigen Prädikats verwendet werden. Insbesondere kann die Funktion nur innerhalb von Klammern ([ ]) verwendet werden.
Wenn das Argument angegeben wird und wenn es die leere Sequenz ist, gibt die Funktion die Zeichenfolge mit der Länge null zurück.
Wenn der Zielknoten keinen Namen besitzt, weil es sich um einen Dokumentknoten, einen Kommentar oder einen Textknoten handelt, gibt die Funktion die Zeichenfolge mit der Länge null zurück.
Beispiele:
Diese Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten des xml-Typs in der AdventureWorks-Datenbank gespeichert werden. Einen Überblick über diese Spalten finden Sie unter Darstellung des xml-Datentyps in der AdventureWorks-Datenbank.
A. Abrufen des lokalen Namens eines bestimmten Knotens
Die folgende Abfrage wird für eine nicht typisierte XML-Instanz angegeben. Der Abfrageausdruck local-name(/ROOT[1]) ruft den lokalen Namensanteil des angegebenen Knotens ab.
declare @x xml
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('local-name(/ROOT[1])')
-- result = ROOT
Die folgende Abfrage wird für die Instructions-Spalte, eine typisierte xml-Spalte, der ProductModel-Tabelle angegeben. Der Ausdruck local-name(/AWMI:root[1]/AWMI:Location[1]) gibt den lokalen Namen (Location) des angegebenen Knotens zurück.
SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
local-name(/AWMI:root[1]/AWMI:Location[1])') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
-- result = Location
B. Verwenden von local-name ohne Argument in einem Prädikat
Die folgende Abfrage wird für die Instructions-Spalte, eine typisierte xml-Spalte, der ProductModel-Tabelle angegeben. Der Ausdruck gibt alle untergeordneten Elemente des <root>-Elements zurück, dessen lokaler Namensanteil von QName "Location" lautet. Die local-name()-Funktion wird im Prädikat angegeben und besitzt keine Argumente. Der Kontextknoten wird von der Funktion verwendet.
SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
/AWMI:root//*[local-name() = "Location"]') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
Die Abfrage gibt alle untergeordneten <Location>-Elemente des <root>-Elements zurück.