Data Accessor-Funktionen – string (XQuery)

Gilt für:SQL Server

Gibt den Wert von $arg zurück, der als Zeichenfolge dargestellt wird.

Syntax

  
fn:string() as xs:string  
fn:string($arg as item()?) as xs:string  

Argumente

$arg
Ist ein Knoten oder ein atomarer Wert.

Bemerkungen

  • Wenn $arg die leere Sequenz ist, wird die Zeichenfolge der Länge null 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 atomarer Wert ist, gibt die Funktion dieselbe Zeichenfolge zurück, die vom Ausdruck zurückgegeben wird, der als xs:string, $arg umgewandelt wird, sofern nicht anders angegeben.

  • Wenn der Typ von $argxs:anyURI ist, wird der URI in eine Zeichenfolge konvertiert, ohne Sonderzeichen zu entweichen.

  • In dieser Implementierung kann fn:string() ohne Argument nur im Kontext eines kontextabhängigen Prädikats verwendet werden. Insbesondere kann die Funktion nur innerhalb von Klammern ([ ]) verwendet werden.

Beispiele

Dieses Thema 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 für verschiedene Knoten

Im folgenden Beispiel wird eine XML-Instanz einer Variablen des Typs xml zugewiesen. Abfragen werden angegeben, um das Ergebnis der Anwendung von string() auf verschiedene Knoten zu veranschaulichen.

declare @x 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(/)')  

Dies ist das Ergebnis:

This is a comment 10  
just text  
 20  

Die folgende Abfrage versucht, den Zeichenfolgenwert eines Verarbeitungsanweisungsknotens abzurufen. Das Ergebnis ist eine leere Sequenz, weil kein Textknoten enthalten ist.

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])')  

Dies ist das Ergebnis:

This is a comment   

Weitere Informationen

XQuery-Funktionen für den xml-Datentyp