Udostępnij za pośrednictwem


ciąg funkcja (XQuery)

Zwraca wartość $arg reprezentowany jako ciąg znaków.

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

Argumenty

  • $arg
    Czy węzeł lub wartość niepodzielny.

Remarks

  • Jeśli $arg jest sekwencją puste, zwracany jest ciąg znaków o zerowej długości.

  • Jeśli $arg węzeł, funkcja zwróci wartość ciąg węzła, który jest uzyskiwany przy użyciu metoda dostępu wartość ciąg. To jest zdefiniowany w specyfikacji W3C XQuery 1.0 i model danych 2.0 XPath.

  • Jeśli $arg jest wartością niepodzielny, funkcja zwraca ten sam ciąg, który jest zwracany przez wyrażenie rzutować jako xs:String, $arg, z wyjątkiem przypadków, gdy zaznaczono inaczej.

  • Jeśli typ $arg jest xs:anyURI, identyfikator URI jest konwertowany na ciąg znaków bez ucieczkom znaków specjalnych.

  • Inthis implementacji FN:ciąg() bez argumentu można używać tylko w kontekście predykat zależne od kontekstu.W szczególności go może być używana tylko wewnątrz nawiasów kwadratowych ([]).

Przykłady

W tym temacie przedstawiono przykłady XQuery przed XML wystąpienia, które są przechowywane w różnych XML typu kolumny bazy danych AdventureWorks.Aby uzyskać ogólne informacje o każdej z tych kolumn zobacz xml Data Type Representation in the AdventureWorks Database.

A.Za pomocą funkcja ciąg

Następujące kwerendy pobiera <Features> węzeł elementu podrzędnego <ProductDescription> element.

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

Jest to wynik częściowy:

<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>

Jeśli określisz String() funkcja, zostanie wyświetlony ciąg wartości określonego węzła.

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

Jest to wynik częściowy.

These are the product highlights. 
3 yearsparts and labor...  

B.Za pomocą funkcja ciąg w różnych węzłach.

W poniższym przykładzie instancję XML jest przypisany do zmiennej typu danych xml.Kwerendy są określone w celu zilustrowania wynik zastosowania ciąg() do poszczególnych węzłów.

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

Następująca kwerenda pobiera wartość ciąg węzeł dokumentu.Ta wartość powstaje poprzez konkatenację ciąg wartości wszystkich jego węzłów potomkiem tekstu.

select @x.query('string(/)')

To jest wynik:

This is a comment 10
just text
 20

Następująca kwerenda próbuje pobrać wartości ciąg węzła instrukcji przetwarzania.Wynik jest sekwencją puste, ponieważ nie zawiera tekstu węzła.

select @x.query('string(/processing-instruction()[1])')

Następująca kwerenda pobiera wartość ciąg węzła komentarza i zwraca węzła tekstu.

select @x.query('string(/comment()[1])')

To jest wynik:

This is a comment