Bagikan melalui


Fungsi pada Nilai String - berisi

Berlaku untuk:SQL Server

Mengembalikan nilai jenis xs:boolean yang menunjukkan apakah nilai $arg 1 berisi nilai string yang ditentukan oleh $arg 2.

Sintaks

  
fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean?  

Argumen

$arg 1
Nilai string untuk diuji.

$arg 2
Substring untuk dicari.

Keterangan

Jika nilai $arg 2 adalah string panjang nol, fungsi mengembalikan True. Jika nilai $arg 1 adalah string panjang nol dan nilai $arg 2 bukan string panjang nol, fungsi mengembalikan False.

Jika nilai $arg 1 atau $arg 2 adalah urutan kosong, argumen diperlakukan sebagai string panjang nol.

Fungsi contains() menggunakan kolase titik kode Unicode default XQuery untuk perbandingan string.

Nilai substring yang ditentukan untuk $arg 2 harus kurang dari atau sama dengan 4000 karakter. Jika nilai yang ditentukan lebih besar dari 4000 karakter, kondisi kesalahan dinamis terjadi dan fungsi contains() mengembalikan urutan kosong alih-alih nilai Boolean True atau False. SQL Server tidak memunculkan kesalahan dinamis pada ekspresi XQuery.

Untuk mendapatkan perbandingan yang tidak peka huruf besar/kecil, fungsi huruf besar atau kecil dapat digunakan.

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

J. Menggunakan fungsi contains() XQuery untuk mencari string karakter tertentu

Kueri berikut menemukan produk yang berisi kata Aerodinamika dalam deskripsi ringkasan. Kueri mengembalikan ProductID dan elemen untuk produk tersebut <Summary> .

--The product model description document uses  
--namespaces. The WHERE clause uses the exit()  
--method of the xml data type. Inside the exit method,  
--the XQuery contains() function is used to  
--determine whether the <Summary> text contains the word  
--Aerodynamic.   
  
USE AdventureWorks2022;
GO  
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)  
SELECT ProductModelID, CatalogDescription.query('  
      <Prod>  
         { /pd:ProductDescription/@ProductModelID }  
         { /pd:ProductDescription/pd:Summary }  
      </Prod>  
 ') as Result  
FROM Production.ProductModel  
where CatalogDescription.exist('  
   /pd:ProductDescription/pd:Summary//text()  
    [contains(., "Aerodynamic")]') = 1  

Hasil

ProductModelID Result

-------------- ---------

28 <Prod ProductModelID="28">

<pd:Summary xmlns:pd=

"https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">

<p1:p xmlns:p1="http://www.w3.org/1999/xhtml">

A TRUE multi-sport bike that offers streamlined riding and

a revolutionary design. Aerodynamic design lets you ride with

the pros, and the gearing will conquer hilly roads.</p1:p>

</pd:Summary>

</Prod>

Lihat Juga

Fungsi XQuery terhadap Tipe Data xml