Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Gilt für:SQL Server
Gibt den Wert von $arg als Zeichenfolge dargestellt zurück.
Syntax
fn:string() as xs:string
fn:string($arg as item()?) as xs:string
Argumente
$arg
Ein Knoten oder ein atomer Wert.
Hinweise
Wenn $arg die leere Sequenz ist, wird die leere Zeichenfolge zurückgegeben.
Wenn $arg ein Knoten ist, gibt die Funktion den Zeichenfolgenwert des Knotens zurück, der mithilfe des Zeichenfolgenwert-Accessors abgerufen wird. Dies wurde in der W3C XQuery 1.0- und XPath 2.0-Datenmodellspezifikation definiert.
Wenn $arg ein atomer Wert ist, gibt die Funktion dieselbe Zeichenfolge zurück, die vom Ausdruck zurückgegeben wird, der als
xs:string, $arg zurückgegeben wird, außer wenn anders angegeben.Wenn der Typ von $arg ist
xs:anyURI, wird der URI in eine Zeichenfolge konvertiert, ohne Sonderzeichen zu entfernen.In dieser Implementierung
fn:string()kann ohne Argument nur im Kontext eines kontextabhängigen Prädikats verwendet werden. Insbesondere kann sie nur in eckigen Klammern ([ ]) verwendet werden.
Beispiele
Dieser Artikel enthält XQuery-Beispiele für XML-Instanzen, die in verschiedenen XML-Typspalten in der AdventureWorks-Datenbank gespeichert sind.
A. Verwenden der Zeichenfolgenfunktion
Die folgende Abfrage ruft den <Features> untergeordneten Elementknoten des <ProductDescription> Elements ab.
SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
/PD:ProductDescription/PD:Features
')
FROM Production.ProductModel
WHERE ProductModelID = 19;
Dies ist das Teilergebnis:
<PD:Features xmlns:PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
These are the product highlights.
<p1:Warranty xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">
<p1:WarrantyPeriod>3 years</p1:WarrantyPeriod>
<p1:Description>parts and labor</p1:Description>
</p1:Warranty>
...
</PD:Features>
Wenn Sie die string() Funktion angeben, erhalten Sie den Zeichenfolgenwert des angegebenen Knotens.
SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
string(/PD:ProductDescription[1]/PD:Features[1])
')
FROM Production.ProductModel
WHERE ProductModelID = 19;
Dies ist das Teilergebnis.
These are the product highlights.
3 yearsparts and labor...
B. Verwenden der Zeichenfolgenfunktion auf verschiedenen Knoten
Im folgenden Beispiel wird eine XML-Instanz einer Variablen des Typs xml zugewiesen. Abfragen werden angegeben, um das Ergebnis der Anwendung string() auf verschiedene Knoten zu veranschaulichen.
DECLARE @x AS XML;
SET @x = '<?xml version="1.0" encoding="UTF-8" ?>
<!-- This is a comment -->
<root>
<a>10</a>
just text
<b attr="x">20</b>
</root>
';
Die folgende Abfrage ruft den Zeichenfolgenwert des Dokumentknotens ab. Dieser Wert wird generiert, indem die Zeichenfolgenwerte aller seiner Nachfolgertextknoten verkettet werden.
SELECT @x.query('string(/)');
Das Ergebnis lautet wie folgt:
This is a comment 10
just text
20
Die folgende Abfrage versucht, den Zeichenfolgenwert eines Verarbeitungsanweisungsknotens abzurufen. Das Ergebnis ist eine leere Sequenz, da sie keinen Textknoten enthält.
SELECT @x.query('string(/processing-instruction()[1])');
Die folgende Abfrage ruft den Zeichenfolgenwert des Kommentarknotens ab und gibt den Textknoten zurück.
SELECT @x.query('string(/comment()[1])');
Das Ergebnis lautet wie folgt:
This is a comment