Aracılığıyla paylaş


IÇERIR (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Tek kelime ve ifadelerlere, belirli mesafedeki kelimelerle veya SQL Server'da ağırlıklı eşleşmelere kesin veya bulanık (daha az kesin) eşleşmeler aramaları. CONTAINS, karakter tabanlı veri türleri içeren tam metin indeksli sütunlarda SQL Server tam metin araması yapmak için Transact-SQL SELECT ifadesinin WHERE cümlesinde kullanılan bir öncüldür.

CONTAINS şunları arayabilir:

  • Bir kelime ya da ifade.

  • Bir kelimenin veya ifadenin önekleri.

  • Bir kelime başka bir kelimeye yakın.

  • Bir kelime başka bir kelimeden çekimli olarak oluşturulur (örneğin, drive kelimesi, drive, drive ve driven kelimelerinin çekim köküdür).

  • Başka bir kelimenin eşanlamlı olduğu bir kelime sözlülüğü kullanır (örneğin, "metal" kelimesinin "alüminyum" ve "çelik" gibi eşanlamlı kelimeleri olabilir).

SQL Server tarafından desteklenen tam metin arama biçimleri hakkında bilgi için bkz. Full-Text Aramaile sorgu .

Transact-SQL söz dizimi kuralları

Sözdizimi

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 | | }  
  

Arguments

column_name
FROM maddesinde belirtilen tablonun tam metin indeksli sütununun adıdır. Sütunlar char, varchar, nchar, nvarchar, metintüründe olabilir . ntext, resim, xml, varbinaryveya varbinary(max).

column_list
İki veya daha fazla sütun belirtir, virgülle ayrılır. column_list parantez içine alınmalıdır. language_term belirtilmediği sürece, column_list tüm sütunlarının dili aynı olmalıdır.

*
Sorgu, verilen arama koşulu için FROM cümlesinde belirtilen tablodaki tüm tam metin indeksli sütunları aradığını belirtir. CONTAINS maddesindeki sütunlar, tam metin indeksine sahip tek bir tablodan gelmelidir. language_term belirtilmediği sürece, tablonun tüm sütunlarının dili aynı olmalıdır.

MÜLK ( column_name , 'property_name')
için geçerlidir: SQL Server 2012 (11.x) ve üzeri.

Belirtilen arama koşulu için aranacak bir belge özelliğini belirtir.

Önemli

Sorgu herhangi bir satır döndürebilmek için, property_name tam metin indeksinin arama özellik listesinde belirtilmelidir ve tam metin indeksinde property_name için özelliğe özgü girişler bulunmalıdır. Daha fazla bilgi için, Mülk Listeleri Arama ile Belge Özelliklerini Ara.

DIL language_term
Kelime kırma, kök oluşturma, tahpecüm genişletme ve değiştirmeler ile sorgu kapsamında gürültü kelimesi (veya durdurma kelimesi) çıkarma için kullanılacak dil mi? Bu parametre isteğe bağlıdır.

Farklı dillerdeki belgeler tek bir sütunda ikili büyük nesneler (BLOB) olarak birlikte saklanırsa, bir belgenin yerel tanımlayıcısı (LCID) içeriğini hangi dilde indeksleyeceğini belirler. Böyle bir sütunu sorgularken, Dİl language_term belirtmek iyi bir eşleşme olasılığını artırabilir.

language_term , bir dilin LCID'sine karşılık gelen bir dize, tam sayı veya onaltılık değer olarak belirtilebilir. language_term belirtilirse, temsil ettiği dil arama koşulunun tüm öğelerine uygulanır. Değer belirtilmezse, sütun tam metin dili kullanılır.

Bir dizi olarak belirtildiğinde, language_termsys.syslanguages (Transact-SQL) uyumluluk görünümündeki alias sütun değerine karşılık gelir. Dize, 'language_term' içinde olduğu gibi tek tırnak içine alınmalıdır. Tamsayı olarak belirtildiğinde, language_term dili tanımlayan gerçek LCID'dir. Onaltılık değer olarak belirtildiğinde, language_term 0x olur ve bunu LCID'nin onaltılık değeri izler. Onaltılık değer, baştaki sıfırlar da dahil olmak üzere sekiz basamağı aşmamalıdır.

Değer çift baytlık karakter kümesi (DBCS) biçimindeyse, SQL Server bunu Unicode'a dönüştürür.

Belirtilen dil geçerli değilse veya o dile karşılık gelen kaynak kurulmamışsa, SQL Server hata döndürür. Nötr dil kaynaklarını kullanmak için 0x0 language_termolarak belirtin.

< contains_search_condition>
column_name içinde aranacak metni ve eşleşme koşullarını belirtir.

<contains_search_condition>nvarchar. Giriş olarak başka bir karakter veri türü kullanıldığında örtük dönüştürme gerçekleşir. Büyük dize veri türleri nvarchar(max) ve varchar(max) kullanılamaz. Aşağıdaki örnekte, @SearchWordolarak tanımlanan varchar(30) değişkeni, CONTAINS koşulunda örtük bir dönüştürmeye neden olur.

USE AdventureWorks2022;  
GO  
DECLARE @SearchWord VARCHAR(30)  
SET @SearchWord ='performance'  
SELECT Description   
FROM Production.ProductDescription   
WHERE CONTAINS(Description, @SearchWord);  

Dönüştürmede "parametre algılama" çalışmadığından, daha iyi performans için nvarchar kullanın. Örnekte, @SearchWordnvarchar(30)olarak bildirin.

USE AdventureWorks2022;  
GO  
DECLARE @SearchWord NVARCHAR(30)  
SET @SearchWord = N'performance'  
SELECT Description   
FROM Production.ProductDescription   
WHERE CONTAINS(Description, @SearchWord);  

Ayrıca, optimal olmayan bir plan oluşturulduğu durumlarda OPTIMIZE FOR sorgu ipucunu da kullanabilirsiniz.

kelime
Boşluk veya noktalama işareti olmayan bir karakter dizisi.

deyim
Her kelime arasında boşluk bulunan bir veya daha fazla kelimedir.

Uyarı

Bazı dillerde, örneğin Asya'nın bazı bölgelerinde yazılanlar, aralarında boşluk olmayan bir veya daha fazla kelimeden oluşan ifadeler içerebilir.

<simple_term>
Tam bir kelime veya ifadeye eşleşme belirtir. Geçerli basit terimlere örnek olarak "blue berry", blueberry ve "Microsoft SQL Server" verilebilir. İfadeler çift tırnak içinde ("") yer almalıdır. Bir ifadedeki kelimeler, veritabanı sütununda yer aldıkları sırayla contains_search_condition'de< belirtilen sırayla aynı şekilde görünmelidir>. Kelime veya ifadedeki karakter araması beve duyarlı değildir. Tam metin indeksli sütunlardaki gürültülü kelimeler (veya stopword) (örneğin a, ve, veya the) tam metin indeksinde saklanmaz. Tek bir kelime aramasında gürültülü bir kelime kullanılırsa, SQL Server sorguda sadece gürültülü kelimeler içerdiğini belirten bir hata mesajı döner. SQL Server, her SQL Server örneğinin \Mssql\Binn\FTERef dizininde standart bir gürültü kelimesi listesi içerir.

Noktalama işaretleri görmezden gelinir. Bu nedenle, CONTAINS(testing, "computer failure") bir satırı "Bilgisayarım nerede?" değeriyle eşleştirir. Bulamamak pahalı olurdu." Kelime bozucu davranışı hakkında daha fazla bilgi için, Arama için Kelime Kırıcı ve Stomakları Yapılandır ve Yönet bkz.

<prefix_term>
Belirtilen metinle başlayan kelime veya ifadelerin eşleşmesini belirtir. Çift tırnak işaretiyle ("") bir ön ek terimi ekleyin ve bitiş tırnak işaretinden önce belirtilen basit terimle başlayan tüm metinler eşleştirilecek şekilde bitiş tırnak işaretinin önüne bir yıldız (*) ekleyin. Madde şu şekilde belirtilmelidir: CONTAINS (column, '"text*"'). Yıldız işareti, sıfır, bir veya daha fazla karakterle eşleşir (kelime veya ifadedeki kök kelime veya kelimelerden). Metin ve yıldız işareti çift tırnak işaretiyle ayrılmazsa, bu nedenle yüklem , CONTAINS (column, 'text*')tam metin araması yıldızı bir karakter olarak kabul eder ve tam eşleşmeleri arar text*. Tam metin motoru, yıldız (*) karakterli kelimeleri bulamaz çünkü kelime kesiciler genellikle bu tür karakterleri görmezden gelir.

<prefix_term> bir ifade olduğunda, ifadede yer alan her kelime ayrı bir ön ek olarak kabul edilir. Bu nedenle, "yerel şarap*" ön ek terimini belirten bir sorgu, "yerel şaraphane", "yerel olarak şarap içip yemek yenen" ve benzeri metin içeren tüm satırlarla eşleşir.

<generation_term>
Dahil edilen basit terimler orijinal kelimenin varyantlarını aradığında kelime eşleşmesini belirtir.

INFLECTİONAL
Dile bağlı kök karakterinin belirtilen basit terim üzerinde kullanılacağını belirtir. Kök davranışı, her belirli dilin kök kurallarına dayanarak tanımlanır. Nötr dilin ilişkili bir stemmer'i yoktur. Sorgulanan sütunların sütun dili, istenen stemmer'a atıfta bulunmak için kullanılır. Eğer language_term belirtilirse, o dile karşılık gelen stemmer kullanılır.

Bir <generation_term> içindeki bir< simple_term> hem isimlerle hem de fiillerle eşleşmeyecektir.

EŞANLAMLILAR SÖZLÜĞÜ
Sütun tam metin diline veya sorguda belirtilen dile karşılık gelen sözlük sözlüğünün kullanıldığını belirtir. simple_term en uzun desen veya desenler <tezaurusla eşleştirilir ve orijinal deseni genişletmek veya değiştirmek için ek terimler oluşturulur.> Eğer simple_term'nin< tamamı veya bir kısmı> için eşleşme bulunmazsa, eşleşmeyen kısım simple_term olarak kabul edilir. Tam metin arama tezaurusu hakkında daha fazla bilgi için Configure and Manage Thesaurus Files for Full-Text Search bölümüne bakınız.

<generic_proximity_term>
Arama yapılan belgede olması gereken kelime veya ifadelerin eşleşmesini belirtir.

Önemli

Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Kullanmanızı <öneririz custom_proximity_term>.

YAKIN | ~
NEAR veya ~ operatörünün her iki tarafındaki kelime veya ifadenin bir belgede yer alması gerektiğini belirtir ki, eşleşme sağlanabilsin. İki arama terimi belirtmeniz gerekir. Verilen bir arama terimi, tek bir kelime veya çift tırnak işaretiyle sınırlandırılan bir ifade ("ifade") olabilir.

Birkaç yakınlık terimi zincirlenebilir, örneğin a NEAR b NEAR c veya a ~ b ~ c. Zincirli yakınlık terimlerinin hepsi belgede bulunmalıdır ki eşleşme iade edilsin.

Örneğin, CONTAINS(*column_name*, 'fox NEAR chicken') ve CONTAINSTABLE(*table_name*, *column_name*, 'fox ~ chicken') her ikisi de belirtilen sütunda hem "fox" hem de "chicken" içeren belgeleri döndürür. Ayrıca, CONTAINSTABLE her belge için "tilki" ve "tavuk" arasındaki yakınlığa göre bir rütbe döndürür. Örneğin, bir belgede "Tilki tavuğu yedi" cümlesi varsa, sıralaması yüksek olur çünkü terimler diğer belgelere göre birbirine daha yakındır.

Genel yakınlık terimleri hakkında daha fazla bilgi için, NEAR with NEAR ile Başka Bir Kelimeye Yakın Kelimeler Arama'na bakınız.

<custom_proximity_term>
için geçerlidir: SQL Server 2012 (11.x) ve üzeri.

Kelime veya ifadelerin eşleşmesini belirtir ve isteğe bağlı olarak, arama terimleri arasındaki izin verilen maksimum mesafeyi belirtir. Ayrıca, arama terimlerinin tam olarak belirttiğiniz sırayla (<match_order>) bulunması gerektiğini belirtebilirsiniz.

Verilen bir arama terimi, tek bir kelime veya çift tırnak işaretiyle sınırlandırılan bir ifade ("ifade") olabilir. Eşleşme iade edilebilmesi için belgede belirtilen her terimin olması gerekir. En az iki arama terimi belirtmeniz gerekir. Arama terimlerinin en fazla sayısı 64'tür.

Varsayılan olarak, özel yakınlık terimi, aradaki mesafe ve sıralarından bağımsız olarak belirtilen terimleri içeren tüm satırları döndürür. Örneğin, aşağıdaki sorguyu eşleştirmek için, bir belgenin herhangi bir yerde, herhangi bir sırayla ve "term1" içermesi term3 term4 yeterlidir:

CONTAINS(column_name, 'NEAR(term1,"term3 term4")')  

Isteğe bağlı parametreler şunlardır:

<maximum_distance>
Bir dizinin eşleşmesi için arama terimlerinin başındaki ve sonundaki arama terimleri arasındaki izin verilen maksimum mesafeyi belirtir.

integer
0'dan 4294967295'e kadar pozitif tam sayı belirtir. Bu değer, ilk ve son arama terimi arasında kaç tane arama dışı terim olabileceğini kontrol eder; ek belirtilmiş arama terimleri hariç tutulur.

Örneğin, aşağıdaki sorgu, ve AAile arasında her iki sırada, maksimum beş mesafe içinde arama BB yapar.

CONTAINS(column_name, 'NEAR((AA,BB),5)')  

İp AA one two three four five BB eşleşirdi. Aşağıdaki örnekte, sorgu üç arama terimi için , AA, BB, ve CC maksimum beş mesafe içinde belirtir:

CONTAINS(column_name, 'NEAR((AA,BB,CC),5)')  

Bu sorgu, toplam mesafenin beş olduğu aşağıdaki diziyle eşleşir:

BB one two CC three four five A A

Dikkat edin, iç arama terimi, CC, sayılmaz.

MAX
Aralarındaki mesafe ne olursa olsun belirtilen terimleri içeren tüm satırları döndürür. Bu varsayılan seçenektir.

<match_order>
Terimlerin arama sorgusuyla döndürülmek için belirtilen sırayla yer alıp vermemesi gerektiğini belirtir. match_order< belirtmek >için ayrıca maximum_distance< belirtmeniz >gerekir.

<match_order> aşağıdaki değerlerden birini alır:

DOĞRU
Belirtilen emri şartlar içinde uygular. Örneğin, NEAR(A,B) sadece A ... Beşleşir.

FALSE
Belirtilen sırayı görmezden gelir. Örneğin, NEAR(A,B) hem A ... B de B ... Aile eşleşir.

Bu varsayılan seçenektir.

Örneğin, aşağıdaki yakınlık terimi, "Monday", "Tuesday" ve "Wednesday" kelimelerini aradığı mesafeden bağımsız olarak belirtilen sırayla arar:

CONTAINS(column_name, 'NEAR ((Monday, Tuesday, Wednesday), MAX, TRUE)')  

Özel yakınlık terimlerinin kullanımı hakkında daha fazla bilgi için NEAR with Another Word'e Yakın Kelimeler Araması sayfasına bakınız.

<weighted_term>
Eşleşen satırların (sorgu tarafından döndürülen) kelime ve ifadeler listesiyle eşleştiğini belirtir; her birine isteğe bağlı olarak bir ağırlık değeri verilir.

ISABOUT
weighted_term anahtar kelimesini belirtir<.>

WEIGHT(weight_value)
0.0'dan 1.0'a kadar bir sayı olan bir ağırlık değeri belirtir. weighted_term'daki<> her bileşen bir weight_value içerebilir. weight_value , bir sorgunun çeşitli bölümlerinin, her satıra atanan sıralama değerini nasıl etkilediğini değiştirmenin bir yoludur. WEIGHT, CONTAINS sorgularının sonuçlarını etkilemez, ancak WEIGHT, CONTAINSTABLE sorgularındaki sıralamayı etkiler.

Uyarı

Ondalık ayırıcı, işletim sistemi konumundan bağımsız olarak her zaman bir noktadır.

{ VE | & } | { VE | &! } | { VEYA | | }
İki içeren arama koşulu arasında mantıksal bir işlem belirtir.

{ VE | & }
İki maddenin arama koşullarının bir eşleşme için karşılanması gerektiğini gösterir. AND operatörünü temsil etmek için AND anahtar kelimesi yerine ampersand sembolü (&) kullanılabilir.

{ VE | &! }
Eşleşme için ikinci arama koşullunun olmaması gerektiğini gösterir. Ve NOT operatörünü temsil etmek için AND NOT anahtar kelimesi yerine ardından gelen ampersand işareti (&!) kullanılabilir.

{ VEYA | | }
İki maddeden herhangi birinin arama koşullarının bir eşleşme için karşılanması gerektiğini gösterir. OR operatörünü temsil etmek için OR anahtar kelimesi yerine çubuk sembolü (|) kullanılabilir.

contains_search_condition parantez içindeki gruplar içerdiğinde<, bu parantez içindeki gruplar önce değerlendirilir.> Parantez içindeki gruplar değerlendirildikten sonra, bu kurallar arama koşullarını içeren mantıksal operatörler kullanıldığında geçerlidir:

  • NOT AND öncesinde uygulanır.

  • NOT sadece AND'dan sonra olabilir, yani VE NOT demektir. OR NOT operatörü izin verilmez. NOT ilk dönemden önce belirtilemez. Örneğin, CONTAINS (mycolumn, 'NOT "phrase_to_search_for" ' ) geçerli değildir.

  • AND ameliyathane ameliyathanından önce uygulanır.

  • Aynı türdeki (AND, OR) boolean operatörler ilişkilendirilebilir ve bu nedenle herhangi bir sırayla uygulanabilir.

n
Birden fazla CONTAINS arama koşulunun ve teriminin belirtilebileceğini gösteren bir yer tutucu mudur?

Genel Açıklamalar

Tam metin önkoşulları ve işlevleri, FROM koşulunda yer alan tek bir tabloda çalışır. Birden çok tabloda arama yapmak için FROM yan tümcenizde birleştirilmiş bir tablo kullanarak iki veya daha fazla tablonun ürünü olan bir sonuç kümesinde arama yapın.

Veritabanı uyumluluk düzeyi 100 olarak ayarlandığında OUTPUT yan tümcesinde tam metin koşullarına izin verilmez.

Uzak Sunucuları Sorgulama

CONTAINS veya FREETEXT öncülünde dört parçalı bir isim kullanarak bağlı bir sunucuda hedef tabloların tam metin indeksli sütunlarını sorgulayabilirsiniz. Bir uzak sunucuyu tam metin sorguları almaya hazırlamak için, uzak sunucudaki hedef tablolarda ve sütunlarda tam metin dizini oluşturun ve ardından uzak sunucuyu bağlı sunucu olarak ekleyin.

Tam metin aramasının aksine, likeTransact-SQL koşulu yalnızca karakter desenleri üzerinde çalışır. Ayrıca, biçimlendirilmiş ikili verileri sorgulamak için LIKE koşulunu kullanamazsınız. Ayrıca, büyük miktarda yapılandırılmamış metin verisine yönelik LIKE sorgusu, aynı verilere yönelik eşdeğer bir tam metin sorgusundan çok daha yavaştır. Milyonlarca metin satırına karşı LIKE sorgusunun geri dönmesi dakikalar sürebilir; oysa tam metin sorgu, aynı veriye karşı sadece saniyeler veya daha az sürede işlem yapabilir; bu, döndürülen satır sayısına ve boyutlarına bağlı olarak değişir. Bir diğer husus, LIKE'ın sadece tüm tablonun basit bir desen taramasını gerçekleştirmesidir. Buna karşılık, tam metin sorgu dil farkındasıdır; indeks ve sorgu zamanında duraklayıcı kelimeleri filtrelemek, sözlük sözlüğü ve çekim genişletmeleri yapmak gibi belirli dönüşümler uygular. Bu dönüşümler, tam metin sorguların hatırlamalarını ve sonuçlarının nihai sıralamasını iyileştirmelerine yardımcı olur.

Arama yapılacak sütunlar listesini belirleyerek birden fazla sütunu sorgulayabilirsiniz. Sütunlar aynı tablodan olmalıdır.

Örneğin, aşağıdaki terim için AdventureWorks2025 örnek veritabanının ve Color sütunlarında Production.Product sorgu aramalarını RedName içermektedir.

Use AdventureWorks2022;  
GO  
SELECT Name, Color   
FROM Production.Product  
WHERE CONTAINS((Name, Color), 'Red');  

Örnekler

A. CONTAINS'i simple_term <ile kullanmak>

Aşağıdaki örnek, fiyatı olan ve kelimesini $80.99içeren tüm ürünleri Mountain bulur.

USE AdventureWorks2022;  
GO  
SELECT Name, ListPrice  
FROM Production.Product  
WHERE ListPrice = 80.99  
   AND CONTAINS(Name, 'Mountain');  
GO  

B. CONTAINS ve ifadeyi simple_term <>

Aşağıdaki örnek, ifadeyi Mountain veya Roadifadesini içeren tüm çarpımları döndürür.

USE AdventureWorks2022;  
GO  
SELECT Name  
FROM Production.Product  
WHERE CONTAINS(Name, ' Mountain OR Road ')  
GO  

C. CONTAINS ile <prefix_term>

Aşağıdaki örnek, sütundaki Name zincir ön ekiyle başlayan en az bir kelime içeren tüm ürün isimlerini geri döndürür.

USE AdventureWorks2022;  
GO  
SELECT Name  
FROM Production.Product  
WHERE CONTAINS(Name, ' "Chain*" ');  
GO  

D. CONTAINS ve OR ile <prefix_term>

Aşağıdaki örnek, herhangi bir chain veya fullveya 'in öneklerine sahip dizileri içeren tüm kategori tanımlarını geri döner.

USE AdventureWorks2022;  
GO  
SELECT Name  
FROM Production.Product  
WHERE CONTAINS(Name, '"chain*" OR "full*"');  
GO  

E. CONTAINS'i proximity_term <ile kullanmak>

için geçerlidir: SQL Server 2012 (11.x) ve üzeri.

Aşağıdaki örnek, "Production.ProductReview" kelimesinin 10 terimi içinde ve belirtilen sırayla (yani, "bike" "controlden önce geldiği) tüm yorumları bike tabloda ararcontrol.

USE AdventureWorks2022;  
GO  
SELECT Comments  
FROM Production.ProductReview  
WHERE CONTAINS(Comments , 'NEAR((bike,control), 10, TRUE)');  
GO  

F. CONTAINS ile <generation_term>

Aşağıdaki örnek, şu biçimdeki kelimelerle tüm rideürünleri arar: riding, ridden ve benzeri.

USE AdventureWorks2022;  
GO  
SELECT Description  
FROM Production.ProductDescription  
WHERE CONTAINS(Description, ' FORMSOF (INFLECTIONAL, ride) ');  
GO  

G. CONTAINS ile <weighted_term>

Aşağıdaki örnek , performanceveya comfortablesözcüklerini smoothiçeren tüm ürün adlarını arar ve her sözcük için farklı ağırlıklar verilir.

USE AdventureWorks2022;  
GO  
SELECT Description  
FROM Production.ProductDescription  
WHERE CONTAINS(Description, 'ISABOUT (performance weight (.8),   
comfortable weight (.4), smooth weight (.2) )' );  
GO  

H. CONTAINS'in değişkenli kullanımı

Aşağıdaki örnekte belirli bir arama terimi yerine bir değişken kullanılır.

USE AdventureWorks2022;  
GO  
DECLARE @SearchWord NVARCHAR(30)  
SET @SearchWord = N'Performance'  
SELECT Description   
FROM Production.ProductDescription   
WHERE CONTAINS(Description, @SearchWord);  
GO  

I. CONTAINS'in mantıksal bir operatörü (AND) kullanılarak

Aşağıdaki örnek, veritabanının AdventureWorks2025 ProductDescription tablosunu kullanır. Sorgu, tanım kimliği 5'e eşit olmayan ve açıklamanın hem kelimeyi Aluminum hem de kelimeyi spindleiçeren açıklamaları aramak için CONTAINS öncülünü kullanır. Arama koşulu AND Boolean operatörünü kullanır.

USE AdventureWorks2022;  
GO  
SELECT Description  
FROM Production.ProductDescription  
WHERE ProductDescriptionID <> 5 AND  
   CONTAINS(Description, 'Aluminum AND spindle');  
GO  

J. CONTAINS kullanılarak satır ekleme doğrulanıyor

Aşağıdaki örnek, SELECT alt sorgusu içinde CONTAINS kullanır. Veritabanı AdventureWorks2025 kullanılarak, sorgu belirli bir döngü için ProductReview tablosundaki tüm yorumların yorum değerini elde eder. Arama koşulu AND Boolean operatörünü kullanır.

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. Bir belge özelliği üzerinde sorgulama

için geçerlidir: SQL Server 2012 (11.x) ve üzeri.

Aşağıdaki sorgu, tablonun Title sütununda indekslenmiş bir özellik Documentüzerinde arama Production.Document yapar. Sorgu, yalnızca özelliklerine veya diziyi TitleMaintenanceiçeren belgeleri Repair döndürür.

Uyarı

Bir özellik aramasının satır döndürmesi için, indeksleme sırasında sütunu ayrıştıran filtre veya filtreler belirtilen özelliği çıkarmalıdır. Ayrıca, belirtilen tablonun tam metin indeksi bu özelliği içerecek şekilde yapılandırılmış olmalıdır. Daha fazla bilgi için, Mülk Listeleri Arama ile Belge Özelliklerini Ara.

Use AdventureWorks2022;  
GO  
SELECT Document 
FROM Production.Document  
WHERE CONTAINS(PROPERTY(Document,'Title'), 'Maintenance OR Repair');  
GO  

Ayrıca Bkz.

Full-Text Arama Kullanmaya Başlama
Full-Text Katalog oluşturma ve yönetme
TAM METIN KATALOG OLUŞTUR (Transact-SQL)
TAM METİN İNDEKSİ OLUŞTUR (Transact-SQL)
Full-Text Dizin oluşturma ve yönetme
Sorgu, Full-Text Arama ile
CONTAINSTABLE (Transact-SQL)
SERBEST METIN (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
Sorgu, Full-Text Arama ile
Tam Metin Araması
Full-Text Arama Sorguları Oluşturma (Visual Database Araçları)
BURADA (Transact-SQL)
Arama Özelliği Listeleri ile Belge Özelliklerini Ara