Aracılığıyla paylaş


dizeişlev (XQuery)

Değerini döndürür. $arg bir dize olarak gösterilir.

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

Bağımsız değişkenler

  • $arg
    Bir düğüm ya da bir atomik değeri belirtilir.

Remarks

  • If $arg boş sırası, sıfır uzunluklu dize döndürdü.

  • If $arg bir düğüm, işlev, dize değeri erişimci kullanarak elde edilen düğüm dize değerini verir. Bu W3C XQuery 1.0 ve XPath 2.0 veri modeli belirtiminde tanımlanmış.

  • If $arg Atomik bir değer işlev olarak atama ifade tarafından döndürülen aynı dizesini döndürür... xs:dize, $arg, aksi belirtilmediği Footnote.

  • Türü $arg olan xs:anyURI URI bir dize, özel karakterler escaping olmadan dönüştürülür.

  • Bu uygulama, fn:dize() bir bağımsız değişken olmadan, yalnızca bir içerik bağımlı yüklemi içeriğinde kullanılabilir.Özellikle, yalnızca köşeli ayraçlar ([]) içinde kullanılabilir.

Örnekler

Bu konu, çeşitli içinde depolanan XML örnekleri karşı XQuery örnekler sağlar. XML türü sütunlarındaki AdventureWorks veritabanındaki.Konusuna genel bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks veritabanındaki.

C.Dize kullanılarak işlev

Aşağıdaki alır query <Features> alt öğe düğümü <ProductDescription> öğe.

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

Bu kısmi kaynaklanır:

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

Belirttiğiniz string() işlev, belirtilen düğüm dize değerini alırsınız.

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

Bu kısmi kaynaklanır.

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

b.Çeşitli düğümlerde dize işlev kullanma

Aşağıdaki örnekte, bir XML örnek bir xml türü değişkenine atanır.Uygulama sonucunu göstermek için sorgu belirtilmedi dize() çeşitli düğümlerde.

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

Aşağıdaki sorgu belge düğümünün dize değerini alır.Bu değer, dize değeri tüm alt öğe metin düğümlerin birleştirerek oluşturulmuş.

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

Bu sonucu oluşur:

This is a comment 10
just text
 20

Bir işlem yönergesi düğümünün dize değerini almak, aşağıdaki sorgu çalışır.Bir metin düğümü içermediği için boş bir sıra sonucudur.

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

Aşağıdaki sorgu Açıklama düğümünün dize değerini alır ve metin düğümü döndürür.

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

Bu sonucu oluşur:

This is a comment