Aracılığıyla paylaş


Birleştirişlev (XQuery)

Sıfır veya daha çok dize bağımsız değişken olarak kabul eder ve değerleri, bu bağımsız değişkenleri birleştirerek oluşturulan bir dize döndürür.

fn:concat ($string as xs:string?
           ,$string as xs:string?
           [, ...]) as xs:string

Bağımsız değişkenler

  • $string
    Art arda bağlamak için isteğe bağlı dize.

Remarks

Işlev, en az iki bağımsız değişken gerektirir.Bir bağımsız değişken boş bir sıra ise, sıfır uzunluklu dize olarak kabul edilir.

Örnekler

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

C.Dizeleri bitiştirmek için concat() XQuery işlevini kullanma

Belirli bir ürün modeli için bu sorgu, garanti süresi ve garanti açıklama birleştirerek oluşturulan bir dize döndürür.Katalog açıklama belgedeki <Warranty> öğe oluşur <WarrantyPeriod> ve <Description> alt öğeleri.

WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)
SELECT CatalogDescription.query('
    <Product 
        ProductModelID= "{ (/pd:ProductDescription/@ProductModelID)[1] }"
        ProductModelName = "{ sql:column("PD.Name") }" >
        { 
          concat( string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:WarrantyPeriod)[1]), "-",
                  string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:Description)[1])) 
         } 
     </Product>
 ') as Result
FROM Production.ProductModel PD
WHERE  PD.ProductModelID=28

Önceki sorgudan aşağıdakilere dikkat edin:

  • SELECT yan tümcesinde CatalogDescription olan bir XML türü sütun.Bu nedenle, Query() yöntem (XML veri türü)Instructions.query(), kullanılır.XQuery deyim sorgu yöntemine bağımsız değişkeni belirtildi.

  • Belgenin karşı sorgu yürütüldüğü ad alanlarını kullanır.Bu nedenle, ad alanı anahtar sözcük için bir ad alanı öneki tanımlamak için kullanılır.Daha fazla bilgi için bkz:XQuery giriş.

Bu sonucu oluşur:

<Product ProductModelID="28" ProductModelName="Road-450">1 year-parts and labor</Product>

Önceki sorgu, belirli bir ürün için bilgi alır.Aşağıdaki sorguyu XML katalog açıklamaları depolanmış olan tüm ürünleri için aynı bilgileri alır.The exist() yöntem of the xml data type in the WHERE yan tümce returns True if the XML document in the rows has a <ProductDescription> element.

WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)

SELECT CatalogDescription.query('
    <Product 
        ProductModelID= "{ (/pd:ProductDescription/@ProductModelID)[1] }" 
        ProductName = "{ sql:column("PD.Name") }" >
        { 
          concat( string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:WarrantyPeriod)[1]), "-",
                  string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:Description)[1])) 
         } 
     </Product>
 ') as Result
FROM Production.ProductModel PD
WHERE CatalogDescription.exist('//pd:ProductDescription ') = 1

Boole değeri tarafından döndürülen Not EXIST() yöntemXML türü, 1 ile karşılaştırılır.

Uygulama kısıtlamaları

Sınırlamaları şunlardır:

  • The concat() işlev in SQL Server only accepts values of type xs:dize.Diğer değerleri açıkça xs:dize veya xdt:untypedAtomic artığını gerekir.