Bagikan melalui


Fungsi pada Nilai String - concat

Berlaku untuk:SQL Server

Menerima nol atau lebih string sebagai argumen dan mengembalikan string yang dibuat dengan menggabungkan nilai masing-masing argumen ini.

Sintaks

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

Argumen

$string
String opsional untuk digabungkan.

Keterangan

Fungsi ini memerlukan setidaknya dua argumen. Jika argumen adalah urutan kosong, argumen diperlakukan sebagai string panjang nol.

Karakter Tambahan (Pasangan Pengganti)

Perilaku pasangan pengganti dalam fungsi XQuery tergantung pada tingkat kompatibilitas database dan, dalam beberapa kasus, pada URI namespace default untuk fungsi. Untuk informasi selengkapnya, lihat bagian "XQuery Functions Are Surrogate-Aware" dalam topik Melanggar Perubahan pada Fitur Mesin Database di SQL Server 2016. Lihat juga ALTER DATABASE Compatibility Level (Transact-SQL) dan Collation and Unicode Support.

Contoh

Topik ini menyediakan contoh XQuery terhadap instans XML yang disimpan di berbagai kolom jenis xml dalam database sampel AdventureWorks.

J. Menggunakan fungsi concat() XQuery untuk menggabungkan string

Untuk model produk tertentu, kueri ini mengembalikan string yang dibuat dengan menggabungkan periode garansi dan deskripsi garansi. Dalam dokumen deskripsi katalog, <>Warrantyelemen terdiri dari elemen turunan.<Description><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  
  

Perhatikan hal berikut ini dari kueri sebelumnya:

  • Dalam klausa SELECT, CatalogDescription adalah kolom jenis xml . Oleh karena itu, metode query() (jenis data XML), Instructions.query(), digunakan. Pernyataan XQuery ditentukan sebagai argumen ke metode kueri.

  • Dokumen tempat kueri dijalankan menggunakan namespace layanan. Oleh karena itu, kata kunci namespace digunakan untuk menentukan awalan untuk namespace. Untuk informasi selengkapnya, lihat XQuery Prolog.

Ini adalah hasilnya:

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

Kueri sebelumnya mengambil informasi untuk produk tertentu. Kueri berikut mengambil informasi yang sama untuk semua produk tempat deskripsi katalog XML disimpan. Metode exist() dari tipe data xml dalam klausa WHERE mengembalikan True jika dokumen XML dalam baris memiliki <ProductDescription> elemen .

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  
  

Perhatikan bahwa nilai Boolean yang dikembalikan oleh metode exist() dari jenis xml dibandingkan dengan 1.

Batasan Implementasi

Ini adalah batasannya:

  • Fungsi concat() di SQL Server hanya menerima nilai jenis xs:string. Nilai lain harus secara eksplisit ditransmisikan ke xs:string atau xdt:untypedAtomic.

Lihat Juga

Fungsi XQuery terhadap Tipe Data xml