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