ciąg funkcji (XQuery)
Zwraca wartość $arg reprezentowany jako ciąg.
Składnia
fn:string() as xs:string
fn:string($arg as item()?) as xs:string
Argumenty
- $arg
Jest węzeł lub wartość niepodzielny.
Uwagi
Jeśli $arg jest puste, zostanie zwrócony ciąg o zerowej długości.
Jeśli $arg jest węzłem, funkcja zwraca wartość ciąg węzła, który jest uzyskiwany przy użyciu wartości ciąg metoda dostępu.To jest zdefiniowane w specyfikacji W3C XQuery 1.0 i XPath 2.0 danych modelu.
Jeśli $arg wartość niepodzielny, funkcja zwraca ten sam ciąg, który jest zwracany przez wyrażenie oddane 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 bez ucieczce znaki specjalne.
Inthis wykonania fn:ciąg() bez argumentu mogą być używane tylko w kontekście predykat zależne od kontekstu.W szczególności go należy używać tylko wewnątrz nawiasów kwadratowych ([]).
Przykłady
W tym temacie przedstawiono przykłady XQuery przeciwko wystąpień XML, które są przechowywane w różnych xml wpisz kolumn w AdventureWorks2008R2 bazy danych.Przegląd tych kolumn, zobacz XML reprezentacji typu danych w bazie danych AdventureWorks2008R2.
A.Przy użyciu funkcja ciąg
Następujące kwerendy pobiera <Features> węzeł element podrzędność z <ProductDescription> elementu.
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 ciąg() , funkcja odbierania wartość ciąg 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 years parts and labor...
B.Przy użyciu funkcja ciąg w różnych węzłach.
W poniższym przykładzie XML wystąpienie jest przypisywany do zmiennej typu 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ę wartość ciąg wszystkich węzłów tekstu elementów potomnych.
select @x.query('string(/)');
Jest to wynikiem:
This is a comment 10
just text
20
Następująca kwerenda próbuje pobrać wartość ciąg węzeł instrukcji przetwarzania.Wynik jest pusta sekwencji, ponieważ nie zawiera węzła tekstu.
select @x.query('string(/processing-instruction()[1])');
Następująca kwerenda pobiera wartość ciąg węzła komentarz i zwraca węzła tekstu.
select @x.query('string(/comment()[1])');
Jest to wynikiem:
This is a comment