Dize Değerlerindeki İşlevler - concat

Şunlar için geçerlidir: SQL Server

Sıfır veya daha fazla dizeyi argüman olarak kabul eder ve bu argümanların her birinin değerlerinin birleştirilmesiyle oluşturulan bir dizeyi döndürür.

Syntax

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

Arguments

$string
Birleştirmek için isteğe bağlı bir ip.

Remarks

Fonksiyon en az iki argüman gerektirir. Bir argüman boş bir diziye ise, sıfır uzunluklu dizi olarak kabul edilir.

Ek Karakterler (Vekil Çiftler)

XQuery fonksiyonlarındaki vekil çiftlerin davranışı, veritabanı uyumluluk seviyesine ve bazı durumlarda fonksiyonlar için varsayılan isim alanı URI'sine bağlıdır. Daha fazla bilgi için, SQL Server 2016'da Veritabanı Motoru Özelliklerindeki Değişiklikleri Kırmak başlığındaki "XQuery Fonksiyonları Taşıyıcı-Farkındadır" bölümüne bakınız. Ayrıca Uyumluluk Seviyesi (Transact-SQL) ve Koleksiyon ile Unicode Desteği'ne bakınızALTER DATABASE.

Examples

Bu konu, AdventureWorks örnek veritabanında çeşitli xml tipi sütunlarda saklanan XML örneklerine karşı XQuery örnekleri sunmaktadır.

A. Dizeleri birleştirmek için concat() XQuery fonksiyonunun kullanılması

Belirli bir ürün modeli için, bu sorgu, garanti süresi ve garanti tanımının birleştirilmesiyle oluşturulan bir diziyi geri döndürür. Katalog açıklama belgesinde, eleman <Warranty> ve <>Descriptionalt elemanlardan oluşur.<WarrantyPeriod>

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 maddesinde, CatalogDescription bir xml tipi sütundur. Bu nedenle, query() yöntemi (XML veri türü) olan Instructions.query() kullanılır. XQuery ifadesi, sorgu yönteminin argümanı olarak belirtilir.

  • Sorgu uygulanan belge isim alanları kullanır. Bu nedenle, isim alanı anahtar kelimesi isim alanı için öneki tanımlamak için kullanılır. Daha fazla bilgi için XQuery Prolog'a bakınız.

Sonuç şu şekildedir:

<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 sorgu, XML katalog açıklamalarının saklandığı tüm ürünler için aynı bilgiyi alır. WHERE cümlesinde xml veri tipinin exist() yöntemi, satırlardaki XML belgesinde bir <ProductDescription> eleman varsa True döndürür.

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  
  

xml tipinin exist() yöntemiyle döndürülen Boolean değerin, 1 ile karşılaştırıldığında dikkat edin.

Uygulama Sınırlamaları

Sınırlamalar şunlardır:

  • SQL Server'daki concat() fonksiyonu yalnızca xs:string tipindeki değerleri kabul eder. Diğer değerler ise açıkça xs:string veya xdt:untypedAtomic olarak dökülmelidir.

Ayrıca Bkz.

Xml Veri Türüne Karşı XQuery İşlevleri