Udostępnij za pośrednictwem


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

Zobacz także

Odwołanie