CONTAINS (Transact-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Mencari kecocokan yang tepat atau fuzzy (kurang tepat) dengan satu kata dan frasa, kata-kata dalam jarak tertentu satu sama lain, atau kecocokan tertimbang di SQL Server. CONTAINS adalah predikat yang digunakan dalam klausa WHERE dari pernyataan TRANSACT-SQL SELECT untuk melakukan pencarian teks lengkap SQL Server pada kolom terindeks teks lengkap yang berisi jenis data berbasis karakter.
CONTAINS dapat mencari:
Kata atau frasa.
Awalan kata atau frasa.
Sebuah kata di dekat kata lain.
Kata yang dihasilkan secara infleksi dari kata lain (misalnya, drive kata adalah batang drive yang tidak fleksibel, mengendarai, mengemudi, dan didorong).
Kata yang merupakan sinonim dari kata lain menggunakan tesaurus (misalnya, kata "metal" dapat memiliki sinonim seperti "aluminium" dan "baja").
Untuk informasi tentang formulir pencarian teks lengkap yang didukung oleh SQL Server, lihat Kueri dengan Pencarian Teks Lengkap.
Sintaks
CONTAINS (
{
column_name | ( column_list )
| *
| PROPERTY ( { column_name }, 'property_name' )
}
, '<contains_search_condition>'
[ , LANGUAGE language_term ]
)
<contains_search_condition> ::=
{
<simple_term>
| <prefix_term>
| <generation_term>
| <generic_proximity_term>
| <custom_proximity_term>
| <weighted_term>
}
|
{ ( <contains_search_condition> )
[ { <AND> | <AND NOT> | <OR> } ]
<contains_search_condition> [ ...n ]
}
<simple_term> ::=
{ word | "phrase" }
<prefix term> ::=
{ "word*" | "phrase*" }
<generation_term> ::=
FORMSOF ( { INFLECTIONAL | THESAURUS } , <simple_term> [ ,...n ] )
<generic_proximity_term> ::=
{ <simple_term> | <prefix_term> } { { { NEAR | ~ }
{ <simple_term> | <prefix_term> } } [ ...n ] }
<custom_proximity_term> ::=
NEAR (
{
{ <simple_term> | <prefix_term> } [ ,...n ]
|
( { <simple_term> | <prefix_term> } [ ,...n ] )
[, <maximum_distance> [, <match_order> ] ]
}
)
<maximum_distance> ::= { integer | MAX }
<match_order> ::= { TRUE | FALSE }
<weighted_term> ::=
ISABOUT
( {
{
<simple_term>
| <prefix_term>
| <generation_term>
| <proximity_term>
}
[ WEIGHT ( weight_value ) ]
} [ ,...n ]
)
<AND> ::=
{ AND | & }
<AND NOT> ::=
{ AND NOT | &! }
<OR> ::=
{ OR | | }
Argumen
column_name
Adalah nama kolom terindeks teks lengkap dari tabel yang ditentukan dalam klausa FROM. Kolom dapat berjenis char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, atau varbinary(max).
column_list
Menentukan dua kolom atau lebih, dipisahkan oleh koma. column_list harus diapit tanda kurung. Kecuali language_term ditentukan, bahasa semua kolom column_list harus sama.
*
Menentukan bahwa kueri mencari semua kolom terindeks teks lengkap dalam tabel yang ditentukan dalam klausa FROM untuk kondisi pencarian yang diberikan. Kolom dalam klausa CONTAINS harus berasal dari satu tabel yang memiliki indeks teks lengkap. Kecuali language_term ditentukan, bahasa semua kolom tabel harus sama.
PROPERTY ( column_name , 'property_name')
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.
Menentukan properti dokumen untuk mencari kondisi pencarian yang ditentukan.
Penting
Agar kueri mengembalikan baris apa pun, property_name harus ditentukan dalam daftar properti pencarian indeks teks lengkap dan indeks teks lengkap harus berisi entri khusus properti untuk property_name. Untuk informasi selengkapnya, lihat Properti Dokumen Pencarian dengan Daftar Properti Pencarian.
LANGUAGE_TERM BAHASA
Adalah bahasa yang digunakan untuk pemecahan kata, stemming, ekspansi dan penggantian tesaurus, dan penghapusan noise-word (atau stopword) sebagai bagian dari kueri. Parameter ini bersifat opsional.
Jika dokumen bahasa yang berbeda disimpan bersama-sama sebagai objek besar biner (BLOB) dalam satu kolom, pengidentifikasi lokal (LCID) dari dokumen tertentu menentukan bahasa apa yang akan digunakan untuk mengindeks kontennya. Saat mengkueri kolom seperti itu, menentukan LANGUAGE language_term dapat meningkatkan probabilitas kecocokan yang baik.
language_term dapat ditentukan sebagai nilai string, bilangan bulat, atau heksadesimal yang sesuai dengan LCID bahasa. Jika language_term ditentukan, bahasa yang diwakilinya diterapkan ke semua elemen kondisi pencarian. Jika tidak ada nilai yang ditentukan, kolom bahasa teks lengkap digunakan.
Ketika ditentukan sebagai string, language_term sesuai dengan nilai kolom alias dalam tampilan kompatibilitas sys.syslanguages (Transact-SQL). String harus diapit dalam tanda kutip tunggal, seperti dalam 'language_term'. Ketika ditentukan sebagai bilangan bulat, language_term adalah LCID aktual yang mengidentifikasi bahasa. Ketika ditentukan sebagai nilai heksadesimal, language_term adalah 0x diikuti oleh nilai heksadesimal LCID. Nilai heksadesimal tidak boleh melebihi delapan digit, termasuk nol di depannya.
Jika nilai dalam format kumpulan karakter byte ganda (DBCS), SQL Server mengonversinya ke Unicode.
Jika bahasa yang ditentukan tidak valid atau tidak ada sumber daya yang diinstal yang sesuai dengan bahasa tersebut, SQL Server mengembalikan kesalahan. Untuk menggunakan sumber daya bahasa netral, tentukan 0x0 sebagai language_term.
<contains_search_condition>
Menentukan teks yang akan dicari di column_name dan kondisi untuk kecocokan.
<> contains_search_condition adalah nvarchar. Konversi implisit terjadi ketika jenis data karakter lain digunakan sebagai input. Jenis data string besar nvarchar(max) dan varchar(max) tidak dapat digunakan. Dalam contoh berikut, @SearchWord
variabel, yang didefinisikan sebagai varchar(30)
, menyebabkan konversi implisit dalam CONTAINS
predikat.
USE AdventureWorks2022;
GO
DECLARE @SearchWord VARCHAR(30)
SET @SearchWord ='performance'
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, @SearchWord);
Karena "parameter sniffing" tidak berfungsi di seluruh konversi, gunakan nvarchar untuk performa yang lebih baik. Dalam contoh, nyatakan @SearchWord
sebagai nvarchar(30)
.
USE AdventureWorks2022;
GO
DECLARE @SearchWord NVARCHAR(30)
SET @SearchWord = N'performance'
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, @SearchWord);
Anda juga dapat menggunakan petunjuk kueri OPTIMIZE FOR untuk kasus di mana rencana yang tidak optimal dihasilkan.
kata
Adalah string karakter tanpa spasi atau tanda baca.
ungkapan
Adalah satu atau beberapa kata dengan spasi di antara setiap kata.
Catatan
Beberapa bahasa, seperti yang ditulis di beberapa bagian Asia, dapat memiliki frasa yang terdiri dari satu atau beberapa kata tanpa spasi di antara mereka.
<simple_term>
Menentukan kecocokan untuk kata atau frasa yang tepat. Contoh istilah sederhana yang valid adalah "blue berry", blueberry, dan "Microsoft SQL Server". Frasa harus diapit dalam tanda kutip ganda (""). Kata-kata dalam frasa harus muncul dalam urutan yang sama seperti yang ditentukan dalam <contains_search_condition> seperti yang muncul di kolom database. Pencarian karakter dalam kata atau frasa tidak peka huruf besar/kecil. Kata bising (atau stopword) (seperti, dan, atau ) dalam kolom terindeks teks lengkap tidak disimpan dalam indeks teks lengkap. Jika kata kebisingan digunakan dalam satu pencarian kata, SQL Server mengembalikan pesan kesalahan yang menunjukkan bahwa kueri hanya berisi kata-kata kebisingan. SQL Server menyertakan daftar kata kebisingan standar dalam direktori \Mssql\Binn\FTERef dari setiap instans SQL Server.
Tanda baca diabaikan. Oleh karena itu, CONTAINS(testing, "computer failure")
cocok dengan baris dengan nilai , "Di mana komputer saya? Kegagalan untuk menemukan itu akan mahal." Untuk informasi selengkapnya tentang perilaku pemecah kata, lihat Mengonfigurasi dan Mengelola Pemecah Kata dan Stemmer untuk Pencarian.
<prefix_term>
Menentukan kecocokan kata atau frasa yang dimulai dengan teks yang ditentukan. Sertakan istilah awalan dalam tanda kutip ganda ("") dan tambahkan tanda bintang (*) sebelum tanda kutip akhir, sehingga semua teks yang dimulai dengan istilah sederhana yang ditentukan sebelum tanda bintang dicocokkan. Klausa harus ditentukan dengan cara ini: CONTAINS (column, '"text*"')
. Tanda bintang cocok dengan nol, satu, atau beberapa karakter (dari kata akar atau kata dalam kata atau frasa). Jika teks dan tanda bintang tidak dibatasi oleh tanda kutip ganda, sehingga predikat membaca CONTAINS (column, 'text*')
, pencarian teks lengkap menganggap tanda bintang sebagai karakter dan mencari kecocokan persis dengan text*
. Mesin teks lengkap tidak akan menemukan kata-kata dengan karakter tanda bintang (*) karena pemutus kata biasanya mengabaikan karakter tersebut.
Ketika <prefix_term> adalah frasa, setiap kata yang terkandung dalam frasa dianggap sebagai awalan terpisah. Oleh karena itu, kueri yang menentukan istilah awalan "anggur lokal*" cocok dengan baris apa pun dengan teks "kincir anggur lokal", "dimenangkan dan dined lokal", dan sebagainya.
<generation_term>
Menentukan kecocokan kata ketika istilah sederhana yang disertakan menyertakan varian kata asli yang akan dicari.
INFLECTIONAL
Menentukan bahwa stemmer dependen bahasa akan digunakan pada istilah sederhana yang ditentukan. Perilaku stemmer didefinisikan berdasarkan aturan stemming dari setiap bahasa tertentu. Bahasa netral tidak memiliki stemmer terkait. Bahasa kolom kolom yang sedang dikueri digunakan untuk merujuk ke stemmer yang diinginkan. Jika language_term ditentukan, stemmer yang sesuai dengan bahasa tersebut digunakan.
simple_term> tertentu <<dalam generation_term> tidak akan cocok dengan kata benda dan kata kerja.
TESAURUS
Menentukan bahwa thesaurus yang sesuai dengan bahasa teks lengkap kolom, atau bahasa yang ditentukan dalam kueri digunakan. Pola atau pola terpanjang dari <simple_term> dicocokkan dengan tesaurus dan istilah tambahan dihasilkan untuk memperluas atau mengganti pola asli. Jika kecocokan tidak ditemukan untuk semua atau sebagian <simple_term>, bagian yang tidak cocok diperlakukan sebagai simple_term. Untuk informasi selengkapnya tentang tesaurus pencarian teks lengkap, lihat Mengonfigurasi dan Mengelola File Tesaurus untuk Pencarian Teks Lengkap.
<generic_proximity_term>
Menentukan kecocokan kata atau frasa yang harus ada dalam dokumen yang sedang dicari.
Penting
Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Kami menyarankan agar Anda menggunakan <custom_proximity_term>.
DEKAT | ~
Menunjukkan bahwa kata atau frasa di setiap sisi operator NEAR atau ~ harus terjadi dalam dokumen agar kecocokan dikembalikan. Anda harus menentukan dua istilah pencarian. Istilah pencarian tertentu dapat berupa satu kata atau frasa yang dibatasi oleh tanda kutip ganda ("frasa").
Beberapa istilah kedekatan dapat ditautkan, seperti dalam a NEAR b NEAR c
atau a ~ b ~ c
. Istilah kedekatan berantai semuanya harus ada dalam dokumen agar kecocokan dikembalikan.
Misalnya, CONTAINS(*column_name*, 'fox NEAR chicken')
dan CONTAINSTABLE(*table_name*, *column_name*, 'fox ~ chicken')
keduanya akan mengembalikan dokumen apa pun di kolom yang ditentukan yang berisi "rubah" dan "ayam". Selain itu, CONTAINSTABLE mengembalikan peringkat untuk setiap dokumen berdasarkan kedekatan "rubah" dan "ayam". Misalnya, jika dokumen berisi kalimat, "Rubah memakan ayam," peringkatnya akan tinggi karena istilahnya lebih dekat satu sama lain daripada di dokumen lain.
Untuk informasi selengkapnya tentang istilah kedekatan umum, lihat Mencari Kata Yang Dekat dengan Kata Lain dengan NEAR.
<custom_proximity_term>
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.
Menentukan kecocokan kata atau frasa, dan secara opsional, jarak maksimum yang diizinkan di antara istilah pencarian. Anda juga dapat menentukan bahwa istilah pencarian harus ditemukan dalam urutan yang tepat di mana Anda menentukannya (<match_order>).
Istilah pencarian tertentu dapat berupa satu kata atau frasa yang dibatasi oleh tanda kutip ganda ("frasa"). Setiap istilah yang ditentukan harus berada dalam dokumen agar kecocokan dikembalikan. Anda harus menentukan setidaknya dua istilah pencarian. Jumlah maksimum istilah pencarian adalah 64.
Secara default, istilah kedekatan kustom mengembalikan baris apa pun yang berisi istilah yang ditentukan terlepas dari jarak intervensi dan terlepas dari urutannya. Misalnya, untuk mencocokkan kueri berikut, dokumen hanya perlu berisi term1
dan "term3 term4
" di mana saja, dalam urutan apa pun:
CONTAINS(column_name, 'NEAR(term1,"term3 term4")')
Parameter opsional adalah sebagai berikut:
<maximum_distance>
Menentukan jarak maksimum yang diizinkan antara istilah pencarian di awal dan akhir string agar string tersebut memenuhi syarat sebagai kecocokan.
Integer
Menentukan bilangan bulat positif dari 0 ke 4294967295. Nilai ini mengontrol berapa banyak istilah non-pencarian yang dapat terjadi antara istilah pencarian pertama dan terakhir, tidak termasuk istilah pencarian tambahan yang ditentukan.
Misalnya, kueri berikut mencari AA
dan BB
, dalam kedua urutan, dalam jarak maksimum lima.
CONTAINS(column_name, 'NEAR((AA,BB),5)')
String AA one two three four five BB
akan cocok. Dalam contoh berikut, kueri menentukan untuk tiga istilah pencarian, , AA
, BB
dan CC
dalam jarak maksimum lima:
CONTAINS(column_name, 'NEAR((AA,BB,CC),5)')
Kueri ini akan cocok dengan string berikut, di mana total jarak adalah lima:
BB one two CC three four five A A
Perhatikan bahwa istilah pencarian dalam, CC
, tidak dihitung.
MAX
Mengembalikan baris apa pun yang berisi istilah yang ditentukan terlepas dari jarak di antara baris tersebut. Ini adalah default.
<match_order>
Menentukan apakah istilah harus terjadi dalam urutan yang ditentukan untuk dikembalikan oleh kueri pencarian. Untuk menentukan <match_order>, Anda juga harus menentukan <maximum_distance>.
<> match_order mengambil salah satu nilai berikut:
BENAR
Memberlakukan urutan yang ditentukan dalam istilah. Misalnya, NEAR(A,B)
hanya A ... B
akan cocok dengan .
SALAH
Mengabaikan urutan yang ditentukan. Misalnya, NEAR(A,B)
akan cocok dengan A ... B
dan B ... A
.
Ini adalah default.
Misalnya, istilah kedekatan berikut mencari kata "Monday
", "Tuesday
", dan "Wednesday
" dalam urutan yang ditentukan dengan terlepas dari jarak di antara mereka:
CONTAINS(column_name, 'NEAR ((Monday, Tuesday, Wednesday), MAX, TRUE)')
Untuk informasi selengkapnya tentang menggunakan istilah kedekatan kustom, lihat Mencari Kata Yang Dekat dengan Kata Lain dengan NEAR.
<weighted_term>
Menentukan bahwa baris yang cocok (dikembalikan oleh kueri) cocok dengan daftar kata dan frasa, masing-masing secara opsional diberi nilai pembobotan.
ISABOUT
<Menentukan kata kunci weighted_term>.
BOBOT(weight_value)
Menentukan nilai bobot, yang merupakan angka dari 0,0 hingga 1,0. Setiap komponen dalam <weighted_term> dapat mencakup weight_value. weight_value adalah cara untuk mengubah bagaimana berbagai bagian kueri memengaruhi nilai peringkat yang ditetapkan untuk setiap baris yang cocok dengan kueri. BOBOT tidak memengaruhi hasil kueri CONTAINS, tetapi BOBOT memengaruhi peringkat dalam kueri CONTAINSTABLE .
Catatan
Pemisah desimal selalu merupakan periode, terlepas dari lokal sistem operasi.
{ AND | & } | { AND NOT | &! } | { OR | | }
Menentukan operasi logis antara dua berisi kondisi pencarian.
{ AND | & }
Menunjukkan bahwa keduanya berisi kondisi pencarian harus dipenuhi untuk kecocokan. Simbol ampersand (&) dapat digunakan alih-alih kata kunci AND untuk mewakili operator AND.
{ AND NOT | &! }
Menunjukkan bahwa kondisi pencarian kedua tidak boleh ada untuk kecocokan. Simbol tanda seru (&!) diikuti dengan simbol tanda seru (&!) dapat digunakan alih-alih kata kunci AND NOT untuk mewakili operator AND NOT.
{ OR | | }
Menunjukkan bahwa salah satu dari keduanya berisi kondisi pencarian harus dipenuhi untuk kecocokan. Simbol bilah (|) dapat digunakan alih-alih kata kunci OR untuk mewakili operator OR.
Saat <contains_search_condition> berisi grup yang dikurung, grup yang dikurung ini dievaluasi terlebih dahulu. Setelah mengevaluasi grup yang dikurung, aturan ini berlaku saat menggunakan operator logis ini dengan berisi kondisi pencarian:
TIDAK diterapkan sebelum AND.
TIDAK hanya dapat terjadi setelah AND, seperti dalam AND NOT. Operator OR NOT tidak diperbolehkan. TIDAK dapat ditentukan sebelum istilah pertama. Misalnya,
CONTAINS (mycolumn, 'NOT "phrase_to_search_for" ' )
tidak valid.DAN diterapkan sebelum OR.
Operator Boolean dengan jenis yang sama (AND, OR) bersifat asosiatif dan oleh karena itu dapat diterapkan dalam urutan apa pun.
n
Adalah tempat penampung yang menunjukkan bahwa beberapa kondisi pencarian CONTAINS dan istilah di dalamnya dapat ditentukan.
Keterangan Umum
Predikat teks lengkap dan fungsi bekerja pada satu tabel, yang tersirat dalam predikat FROM. Untuk mencari di beberapa tabel, gunakan tabel yang digabungkan dalam klausa FROM Anda untuk mencari pada tataan hasil yang merupakan produk dari dua tabel atau lebih.
Predikat teks lengkap tidak diizinkan dalam klausul OUTPUT saat tingkat kompatibilitas database diatur ke 100.
Mengkueri Server Jarak Jauh
Anda dapat menggunakan nama empat bagian dalam predikat CONTAINS atau FREETEXT untuk mengkueri kolom terindeks teks lengkap dari tabel target di server tertaut. Untuk menyiapkan server jarak jauh untuk menerima kueri teks lengkap, buat indeks teks lengkap pada tabel dan kolom target di server jarak jauh lalu tambahkan server jarak jauh sebagai server tertaut.
Perbandingan LIKE ke Pencarian Teks Lengkap
Berbeda dengan pencarian teks lengkap, predikat LIKETransact-SQL hanya berfungsi pada pola karakter. Selain itu, Anda tidak dapat menggunakan predikat LIKE untuk mengkueri data biner yang diformat. Selain itu, kueri LIKE terhadap sejumlah besar data teks yang tidak terstruktur jauh lebih lambat daripada kueri teks lengkap yang setara terhadap data yang sama. Kueri LIKE terhadap jutaan baris data teks dapat memakan waktu beberapa menit untuk dikembalikan; sedangkan kueri teks lengkap hanya bisa memakan waktu beberapa detik atau kurang terhadap data yang sama, tergantung pada jumlah baris yang dikembalikan dan ukurannya. Pertimbangan lain adalah LIKE hanya melakukan pemindaian pola sederhana dari seluruh tabel. Kueri teks lengkap, sebaliknya, sadar bahasa, menerapkan transformasi tertentu pada waktu indeks dan kueri, seperti memfilter stopword dan membuat tesaurus dan ekspansi infleksi. Transformasi ini membantu kueri teks lengkap meningkatkan pengenalan dan peringkat akhir hasilnya.
Mengkueri Beberapa Kolom (Pencarian Teks Lengkap)
Anda bisa mengkueri beberapa kolom dengan menentukan daftar kolom yang akan dicari. Kolom harus dari tabel yang sama.
Misalnya, kueri CONTAINS berikut mencari istilah Red
di Name
kolom Production.Product
dan Color
tabel database sampel AdventureWorks2022.
Use AdventureWorks2022;
GO
SELECT Name, Color
FROM Production.Product
WHERE CONTAINS((Name, Color), 'Red');
Contoh
J. Menggunakan CONTAINS dengan <simple_term>
Contoh berikut menemukan semua produk dengan harga $80.99
yang berisi kata Mountain
.
USE AdventureWorks2022;
GO
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice = 80.99
AND CONTAINS(Name, 'Mountain');
GO
B. Menggunakan CONTAINS dan frasa dengan <simple_term>
Contoh berikut mengembalikan semua produk yang berisi frasa Mountain
atau Road
.
USE AdventureWorks2022;
GO
SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, ' Mountain OR Road ')
GO
C. Menggunakan CONTAINS dengan <prefix_term>
Contoh berikut mengembalikan semua nama produk dengan setidaknya satu kata yang dimulai dengan rantai awalan Name
di kolom.
USE AdventureWorks2022;
GO
SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, ' "Chain*" ');
GO
D. Menggunakan CONTAINS dan OR dengan <prefix_term>
Contoh berikut mengembalikan semua deskripsi kategori yang berisi string dengan awalan baik chain
atau full
.
USE AdventureWorks2022;
GO
SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, '"chain*" OR "full*"');
GO
E. Menggunakan CONTAINS dengan <proximity_term>
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.
Contoh berikut mencari Production.ProductReview
tabel untuk semua komentar yang berisi kata bike
dalam 10 istilah kata "control
" dan dalam urutan yang ditentukan (yaitu, di mana "bike
" mendahului "control
").
USE AdventureWorks2022;
GO
SELECT Comments
FROM Production.ProductReview
WHERE CONTAINS(Comments , 'NEAR((bike,control), 10, TRUE)');
GO
F. Menggunakan CONTAINS dengan <generation_term>
Contoh berikut mencari semua produk dengan kata-kata formulir ride
: berkuda, ditunggangi, dan sebagainya.
USE AdventureWorks2022;
GO
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, ' FORMSOF (INFLECTIONAL, ride) ');
GO
G. Menggunakan CONTAINS dengan <weighted_term>
Contoh berikut mencari semua nama produk yang berisi kata performance
, , comfortable
atau smooth
, dan bobot yang berbeda diberikan untuk setiap kata.
USE AdventureWorks2022;
GO
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, 'ISABOUT (performance weight (.8),
comfortable weight (.4), smooth weight (.2) )' );
GO
H. Menggunakan CONTAINS dengan variabel
Contoh berikut menggunakan variabel alih-alih istilah pencarian tertentu.
USE AdventureWorks2022;
GO
DECLARE @SearchWord NVARCHAR(30)
SET @SearchWord = N'Performance'
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, @SearchWord);
GO
I. Menggunakan CONTAINS dengan operator logis (AND)
Contoh berikut menggunakan tabel AdventureWorks2022
ProductDescription database. Kueri menggunakan predikat CONTAINS untuk mencari deskripsi di mana ID deskripsi tidak sama dengan 5 dan deskripsi berisi kata Aluminum
dan kata spindle
. Kondisi pencarian menggunakan operator AND Boolean.
USE AdventureWorks2022;
GO
SELECT Description
FROM Production.ProductDescription
WHERE ProductDescriptionID <> 5 AND
CONTAINS(Description, 'Aluminum AND spindle');
GO
j. Menggunakan CONTAINS untuk memverifikasi penyisipan baris
Contoh berikut menggunakan CONTAINS dalam subkueri SELECT. AdventureWorks2022
Menggunakan database, kueri mendapatkan nilai komentar dari semua komentar dalam tabel ProductReview untuk siklus tertentu. Kondisi pencarian menggunakan operator AND Boolean.
USE AdventureWorks2022;
GO
INSERT INTO Production.ProductReview
(ProductID, ReviewerName, EmailAddress, Rating, Comments)
VALUES
(780, 'John Smith', 'john@fourthcoffee.com', 5,
'The Mountain-200 Silver from AdventureWorks2008 Cycles meets and exceeds expectations. I enjoyed the smooth ride down the roads of Redmond');
-- Given the full-text catalog for these tables is Adv_ft_ctlg,
-- with change_tracking on so that the full-text indexes are updated automatically.
WAITFOR DELAY '00:00:30';
-- Wait 30 seconds to make sure that the full-text index gets updated.
SELECT r.Comments, p.Name
FROM Production.ProductReview AS r
JOIN Production.Product AS p
ON r.ProductID = p.ProductID
AND r.ProductID = (SELECT ProductID
FROM Production.ProductReview
WHERE CONTAINS (Comments,
' AdventureWorks2008 AND
Redmond AND
"Mountain-200 Silver" '));
GO
K. Mengkueri properti dokumen
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.
Kueri berikut mencari pada properti terindeks, Title
, di Document
kolom Production.Document
tabel. Kueri hanya mengembalikan dokumen yang propertinya Title
berisi string Maintenance
atau Repair
.
Catatan
Agar pencarian properti mengembalikan baris, filter atau filter yang mengurai kolom selama pengindeksan harus mengekstrak properti yang ditentukan. Selain itu, indeks teks lengkap dari tabel yang ditentukan harus dikonfigurasi untuk menyertakan properti . Untuk informasi selengkapnya, lihat Properti Dokumen Pencarian dengan Daftar Properti Pencarian.
Use AdventureWorks2022;
GO
SELECT Document
FROM Production.Document
WHERE CONTAINS(PROPERTY(Document,'Title'), 'Maintenance OR Repair');
GO
Lihat Juga
Mulai dengan Pencarian Teks Lengkap
Membuat dan Mengelola Katalog Teks Lengkap
BUAT KATALOG FULLTEXT (T-SQL)
MEMBUAT INDEKS FULLTEXT (Transact-SQL)
Membuat dan Mengelola Indeks Teks Lengkap
Kueri dengan Pencarian Teks Lengkap
CONTAINSTABLE (Transact-SQL)
FREETEXT (T-SQL)
FREETEXTTABLE (Transact-SQL)
Kueri dengan Pencarian Teks Lengkap
Pencarian Teks Lengkap
Membuat Kueri Pencarian Teks Lengkap (Alat Database Visual)
WHERE (Transact-SQL)
Cari Properti Dokumen dengan Daftar Properti Pencarian