(Transact-sql) içerir

Kesin ya da bulanık (daha az hassas) maçları tek kelime ve ifadeler, belli bir mesafede başka bir kelime veya ağırlıklı eşleşmeleri arar. CONTAINS yüklemi kullanılan olduğunu where yan tümcesi , bir Transact-SQLselect deyimi gerçekleştirmek için SQL Servertam metin üzerinde tam metin arama dizin karakter tabanlı veri türleri içeren sütunlar.

CONTAINS arayabilirsiniz:

  • Bir sözcük veya tümcecik.

  • Bir sözcük veya tümcecik önek.

  • Bir sözcüğün yanında başka bir kelime.

  • Inflectionally başka oluşturulan bir sözcük (örneğin, sözcük sürücüdür sürücüler, sürüş, sürdü, Inflectional kök ve tahrik).

  • Eş anlamlılar sözlüğü (örneğin, word "metal" kullanarak başka bir sözcüğün eşanlamlısı olan bir sözcük "alüminyum" gibi eşanlamlıları olabilir "ve"çelik").

[!NOT]

Tam metin arama tarafından desteklenen biçimleri hakkında bilgi için SQL Serverbakın Tam metin arama sorgusuyla.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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 | | }

Bağımsız değişkenler

  • column_name
    from yan tümcesinde belirtilen tablonun tam metin dizini oluşturulmuş sütun addır. The columns can be of type char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, or varbinary(max).

  • column_list
    Virgülle ayrılmış iki veya daha fazla sütun belirtir. column_listayraç içine alınmalıdır. Sürece language_termbelirtilen tüm sütunları dili column_listaynı olmalıdır.

  • *
    Sorgu, belirtilen arama koşulu from yan tümcesinde belirtilen tablodaki tüm tam metin dizini oluşturulmuş sütunlar arama yapar belirtir. CONTAINS yan tümcesindeki sütunların tam metin dizinine sahip tek bir tablodan gelmelidir. Sürece language_termbelirtilirse, tüm sütunlar tablonun dili aynı olması gerekir.

  • PROPERTY ( column_name , 'property_name')
    Belirtir bir belge özelliğinde belirtilen arama koşulu Aranacak.

    Önemli notÖnemli

    Tüm satırları döndüren sorgu için property_namebelirtilmeli arama özelliğinde özelliği özel girişler için tam metin dizini ve tam metin dizin listesi içermelidir property_name. Daha fazla bilgi için, bkz. Arama belge özellikleri ile arama özellik listeleri.

  • DİLlanguage_term
    Sözcük sonu, Doğan, eş anlamlılar açılımları ve değiştirmeler ve etkisiz sözcük için kullanılacak dil (ya da stopword) kaldırma sorgu bir parçası olarak. Bu parametre isteğe bağlıdır.

    Farklı dillerde belgeler birlikte olarak büyük ikili nesneler (BLOB'lar) tek bir sütunda depolanan verilen belgenin yerel ayar tanıtıcısını (LCID) için dizin içeriği kullanmak için hangi dili belirler. Böyle bir sütun sorgularken, dil belirtme language_termiyi bir eşleşme olasılığını artırabilir.

    language_termbir dize, tamsayı veya dil LCID için karşılık gelen onaltılık değeri belirtilebilir. Eğer language_termbelirtilirse, temsil ettiği dil arama koşulu öğelerin tümüne uygulanır. Herhangi bir değer belirtilirse, sütun tam metin dili kullanılır.

    Bir dizge olarak belirtilen language_termkarşılık ad sütun değeri o sys.syslanguages (Transact-sql)Uyumluluk Görünümü. Dize gibi tek tırnak işareti içine alınmalıdır 'language_term'. Bir tamsayı olarak belirtildiğinde language_termdilini tanımlayan gerçek LCID '. Onaltılı değer olarak belirtildiğinde language_term0 x LCID onaltılık değerini izliyor. Onaltılık değeri, sekiz basamak, öndeki dahil aşmamalıdır.

    Değer ise çift baytlı karakter kümesi (dbcs) biçimi, SQL ServerUnicode'a dönüştürür.

    Belirtilen dil veya orada geçerli değilse kaynak yok bu dile karşılık gelen yüklü SQL Serverhata veriyor. Nötr dil kaynakları kullanmak için 0x0 olarak belirtmeniz language_term.

  • <contains_search_condition>
    İçinde aranacak metni belirtir column_nameve bir eşleşme koşulları.

    <contains_search_condition>is nvarchar. Başka bir karakter veri türü girdi olarak kullanılan bir örtük dönüştürme gerçekleşir. Aşağıdaki örnekte, @SearchWorddeğişken olarak tanımlandığı, varchar(30), neden bir örtük dönüştürme CONTAINSyüklemi.

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

    Çünkü "parametresi koklama" does değil iş arasında dönüşüm, kullanım nvarchardaha iyi performans için. Örnekte, ilan @SearchWord olarak nvarchar(30).

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

    En iyi duruma getirmek için sorgu ipucu olmayan uygun bir plan içinde oluşturulan durumlar için de kullanabilirsiniz.

  • word
    Boşluk veya noktalama işareti olmadan karakter dizisidir.

  • phrase
    Bir veya daha fazla kelime her kelime arasında boşluk olduğunu.

    [!NOT]

    Asya ' nın bazı bölgelerinde yazılmış olanlar gibi bazı diller, bir veya daha fazla kelime aralarında boşluk olmadan oluşan tümceleri olabilir.

  • <simple_term>
    Tam bir sözcük veya deyim için bir eşleme belirtir. "Mavi meyvesi", yaban mersini ve "Microsoft SQL Server" geçerli basit örnekleridir. İfadeler, çift tırnak içine alınmalıdır (""). Sözcükleri tümcecik belirtildiği gibi aynı sırada almalıdır <contains_search_condition>veritabanı sütununda göründükleri gibi. Arama sözcüğü veya tümceciği karakterler için büyük küçük harf duyarlı değildir. Gürültü sözcükleri (ya da stopwords) (gibi bir ve, veya) tam metin dizini oluşturulmuş sütun tam metin dizini içinde saklanmaz. Bir sözcük, bir tek kelime arama, kullanılırsa, SQL Serversorgu yalnızca gürültü sözcükleri içerdiğini belirten bir hata iletisi döndürür. SQL Servergürültü sözcükleri standart bir listesini içeren her örneğinin dizin \Mssql\Binn\FTERef SQL Server.

    Noktalama işareti sayılır. Bu nedenle, CONTAINS(testing, "computer failure")eşleşen bir satır değeri "Bilgisayarım nerede? Hata bulmak için pahalı olurdu." Sözcük ayırıcı davranışı üzerinde daha fazla bilgi için bkz: Yapılandırma ve sözcük ayırıcılarını ve sözcük köklerini arama yönetme.

  • <prefix_term>
    Belirtilen metni ile başlayan ifadeler veya eşleşme sözcüklerin belirtir. Bir önek terimi çift tırnak içine alın ("") ve bir yıldız(*) bitiş tırnak işaretinden önce ekleyebilirsiniz, böylece tüm metin yıldız önce belirtilen basit terimi ile başlayan eşleştirilir. Fıkra bu şekilde belirtilmelidir: CONTAINS (column, '"text*"'). Yıldız, sıfır, bir veya daha fazla karakter (kök kelime ya da kelime kelime veya tümcecik) eşleşir. Metin ve yıldız çift tırnak işaretleri ile ayrılmış değil, yani yüklemi okur CONTAINS (column, 'text*'), bir karakter için tam eşleşenleri arar gibi yıldız tam metin arama düşünüyor text*. Sözcük ayırıcılarını genellikle böyle karakterlerini yoksay çünkü tam metin altyapısı yıldız(*) karakteri içeren sözcükleri bulamaz.

    Ne zaman <prefix_term>bir ifade olduğunu ifade bulunan her sözcüğü ayrı bir önek olarak kabul edilir. Bu nedenle, bir önek terimi, "Yerel şarap *" belirtme sorgu "Yerel Şarapçılık", "Yerel wined and dined" herhangi bir satır metin ile eşleşen ve benzeri.

  • <generation_term>
    Bir eşleşme sözcüklerin dahil basit şartları türevlerini aramak için özgün sözcük eklediğinizde belirtir.

  • INFLECTİONAL
    Dile bağımlı sözcük kökü ayırıcı belirtilen basit terimi kullanılmak üzere olduğunu belirtir. Sözcük kökü ayırıcı davranışı doğan her özel dilin kurallarına göre tanımlanır. Nötr dil bir ilişkili sözcük kökü ayırıcı yok. Sorgulanan sütunları sütun dilini istenen sözcük kökü ayırıcı için başvurmak için kullanılır. Eğer language_term, dil kullanılır karşılık gelen sözcük kökü ayırıcı belirtilir.

    Verilen a <simple_term>içinde bir <generation_term>sözcükler ve fiiller eşleşecektir değil.

  • EŞ ANLAMLILAR
    Sütun tam metin dili veya sorguda belirtilen dile karşılık gelen eşanlamlılar kullanıldığını belirtir. Uzun desen veya desenlerini <simple_term>karşı eşanlamlılar eşleştirilir ve ek koşulları genişletmek veya özgün modeli değiştirmek için oluşturulur. Eğer bir eşleşme bulunamazsa, tümü veya bir bölümü için <simple_term>, eşleşmeyen bölümü kabul edilir bir simple_term. Tam metin arama eşanlamlılar hakkında daha fazla bilgi için bkz: Yapılandırmak ve eş anlamlılar dosyaları için tam metin araması yönetme.

  • <generic_proximity_term>
    Sözcük veya tümcecikleri arandı belgede olması gereken bir maç belirtir.

    Önemli notÖnemli

    Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.We recommend that you use <custom_proximity_term>.

    • NEAR | ~
      Gösteren sözcüğün veya tümceciğin her tarafına yakın veya ~ operatörü döndürülecek bir maç için belgedeki meydana gerekir. İki arama koşullarını belirtmeniz gerekir. Belirli bir arama terimi tek bir sözcük ya da çift tırnak işaretleri ile ayrılmış bir ifade olabilir ("phrase").

      Birkaç yakın dönem, hem de zincirleme a NEAR b NEAR cveya a ~ b ~ c. Zincirleme yakınlık şartları tüm döndürülecek bir maç için belgede olması gerekir.

      Örneğin, CONTAINS(column_name, 'fox NEAR chicken')ve CONTAINSTABLE(table_name, column_name, 'fox ~ chicken')her ikisi içinde belirtilen sütun içeren herhangi bir belge de "tilki" iade ediyorum ve "tavuk". Ayrıca CONTAINSTABLE "tilki" yakınlığı üzerinde göre her bir belge için bir mertebesini verir ve "tavuk". Bir belgede cümle varsa, örneğin, "tilki tavuk yedik" şartlarda başka belgelerde birbirlerine yakın olduğundan sıralamasını yüksek olacaktır.

      Genel yaklaşım terimler hakkında daha fazla bilgi için bkz: Arama sözcükleri yakın başka bir kelime ile yakın.

  • <custom_proximity_term>
    Sözcük veya tümcecikleri bir eşleşme belirtir ve isteğe bağlı olarak, arama terimleri arasında maksimum uzaklığı izin. Arama terimlerinizi belirttiğiniz bunları aynı sırada bulunan gerekir Ayrıca belirtebilirsiniz (<match_order>).

    Belirli bir arama terimi tek bir sözcük ya da çift tırnak işaretleri ile ayrılmış bir ifade olabilir ("phrase"). Belirtilen her dönem belge için döndürülecek bir maç olması gerekir. En az iki ara dönem belirtmeniz gerekir. Arama terimlerinizi sayısı 64'tür.

    Varsayılan olarak, özel yakınlık terimi sıralarına bakılmaksızın ve aradaki mesafe bakılmaksızın belirtilen koşulları içeren tüm satırları döndürür. Örneğin, aşağıdaki sorgu eşleştirmek için belgeyi içeren yeterlidir term1ve "term3 term4'' her yerde, herhangi bir sırada:

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

    İsteğe bağlı parametreler aşağıdaki gibidir:

    • <maximum_distance>
      Başlangıç ve bitiş dizesi için bu dizeyi bir eşleşme olarak nitelemek sipariş arama koşulları arasında izin verilen maksimum uzaklığı belirtir.

      • integer
        4294967295 0 Arasında pozitif bir tamsayı belirtir. Bu değer, herhangi bir ek belirli bir arama terimi hariç, ilk ve son arama terimleri arasında kaç arama dışı şartlar oluşabilir denetler.

        Örneğin, aşağıdaki sorgu arar "AA'' ve "BB", bir maksimum mesafesi beş ya da sırada.

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

        Dize "AA one two three four five BB'' bir maç olacak. Aşağıdaki örnek, sorgu belirtir üç arama terimleri, "AA","BB", ve "CC" maksimum mesafesi beş:

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

        Bu sorgu aşağıdaki dize, toplam mesafeyi beş olduğu eşleşecektir:

        BB one two CC three four five AA

        İç arama terimi, "cc", yok sayılır dikkat edin.

      • MAX
        Belirtilen şartlar ne olursa olsun aralarındaki uzaklığı içeren tüm satırları döndürür. Varsayılan değer budur.

    • <match_order>
      Terimleri arama sorgu tarafından döndürülen belirtilen sırada meydana gerekir olup olmadığını belirtir. Belirtmek için <match_order>, de belirtmeniz gerekir <maximum_distance>.

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

      • GERÇEK
        Belirtilen sırayla içinde dönem zorlar. Örneğin, NEAR(A,B)sadece eşleşecektir A … B.

      • FALSE
        Belirtilen sırayla yok sayar. Örneğin, NEAR(A,B)hem de eşleşecektir A … Bve B … A.

        Varsayılan değer budur.

      Örneğin, aşağıdaki yakınlık terimi sözcükleri arar "Monday","Tuesday", ve "Wednesday'' belirtilen sırada ile aralarındaki uzaklığı bakılmaksızın:

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

    Özel yakınlık terimleri kullanma hakkında daha fazla bilgi için bkz: Arama sözcükleri yakın başka bir kelime ile yakın.

  • <weighted_term>
    (Sorgu tarafından döndürülen) eşleşen satırların listesi sözcük ve tümcecikleri, eşleşen her isteğe bağlı olarak verilen ağırlık değeri belirtir.

  • ISABOUT
    Belirtir <weighted_term>anahtar.

    • Ağırlık (weight_value)
      0.0 İle 1.0 arasında bir sayı olan bir ağırlık değerini belirtir. Her bileşenin <weighted_term>dahil bir weight_value. weight_valuebir sorgunun nasıl çeşitli bölümlerini değiştirmek için bir yolu etkileyen sorgusuyla eşleşen her satıra atanan rütbe değeri olur. AĞIRLIK, ama ağırlık etkileri rütbesi içerir sorguların sonuçlarını etkilemez CONTAINSTABLE sorgular.

      [!NOT]

      Ondalık ayırıcının her zaman, ne olursa olsun işletim sistemi yerel ayarı noktadır.

  • {VE | & } | {DEĞİL |&! } | {VEYA | | }
    İkisi arasında mantıksal bir işlemi arama koşulları içeren belirtir.

    • { AND | & }
      İki ara bir maç için koşulların sağlanması gerekir içerdiğini gösterir. Ampersan simgesi (&) ve anahtar kelime yerine and işlecini temsil etmek için kullanılabilir.

    • NAME =& ,
      İkinci arama koşulu bir maç için mevcut olmamalıdır gösterir. Ve ardından ünlem işareti simgesi (&!) and not anahtar yerine ve not işleci temsil etmek için kullanılabilir.

    • {VEYA | | }
      İki ya da içeren bir maç için koşulların sağlanması gerekir arama gösterir. Çubuğu simgesi (|) kullanılabilir or anahtar kelime yerine veya işlecini temsil edecek.

      Ne zaman <contains_search_condition>parenthesized grupları, gruplar öncelikle değerlendirilir bu parenthesized içerir. Bu mantıksal işleçlerle kullanarak arama koşulları içeren parenthesized grupları değerlendirmek sonra bu kurallar uygulanır:

      • Önce uygulanmaz.

      • Sadece ve sonra ve değil de ortaya. VEYA not işleci kullanılamaz. Dönem önce tarif edilemez değil. Örneğin, CONTAINS (mycolumn, 'NOT "phrase_to_search_for" ' )geçerli değil.

      • Önce uygulanır ve ya.

      • Boolean işleçleri (ve, veya) aynı türden ilişkilendirilebilir ve bu nedenle herhangi bir sırada uygulanabilir.

      • n
        Yer tutucu birden çok arama koşullarını içerir ve içerdikleri şartları belirtilebilir gösteren.

Genel Yorumlar

Tam metin doğrulamaları ve çalışma from yüklemi örtülü tek bir tabloda fonksiyonları. Birden fazla tabloyu temel arama yapmak için iki veya daha fazla tablodan bir ürün bir sonuç kümesi üzerinde aramak için from yan tümcesinde birleştirilen tablo kullanın.

Tam metin yüklemler içinde izin verilmez output yan tümcesi ne zaman veritabanı uyumluluk düzeyi 100 olarak ayarlanır.

Uzak sunuculara sorgulama

Sen-ebilmek kullanma four-part adı içerir veya freetext tam metin sorgu yüklemi endeksli bir bağlantılı sunucu hedef tablolardaki sütunları. Tam metin sorgu almak için uzak sunucuya hazırlamak için hedef tabloları ve sütunları uzak sunucu üzerinde bir tam metin dizini oluşturmak ve sonra bağlantılı bir sunucu uzak sunucu ekleme.

Full-Text Search gibi karşılaştırma

Tam metin arama, farklı olarak gibi Transact-SQL yüklemi sadece karakter modelleri üzerinde çalışıyor. Ayrıca, biçimlendirilmiş ikili veri sorgulamak için LIKE kullanamazsınız. Ayrıca, yapılandırılmamış metin veri büyük miktarda gibi bir sorgu aynı verileri eşdeğer bir tam metin sorgu yavaştır. Metin veri satırları milyonlarca gibi bir sorgu dönmek için dakika alabilir; Oysa bir tam metin sorgu yalnızca birkaç saniye alabilir ya da daha az karşı aynı veri türüne bağlı olarak döndürülen satır sayısı ve büyüklükleri. Başka bir noktadır gibi tüm tabloyu yalnızca basit desen tarama gerçekleştirir. Tam metin sorgu, buna karşılık, farkında, dizin ve sorgu zaman stopwords filtreleme ve eş anlamlılar sözlüğü ve Inflectional açılımları yapmak gibi belirli dönüşümleri uygulama dilidir. Bu dönüşümler, tam metin sorguları kendi hatırlama ve sonuçları son sıralamasını artırmak yardımcı olur.

Çoklu sütunlar (tam metin araması) sorgulama

Birden çok sütunu aramak için sütunlar listesi belirterek sorgulayabilirsiniz. Sütunları aynı tablodan olmalıdır.

Örneğin, aşağıdaki içerir sorgu terimi için arama "Red'' içinde Nameve Colorsütunları Production.Producttablo AdventureWorks2012örnek veritabanı.

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

Örnekler

A.İle CONTAINS kullanma <simple_term>

Aşağıdaki örnek, tüm ürünleri ile fiyatı bulur $80.99sözcüğü içeren "Mountain".

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

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

B.İÇERİR ve ifade ile kullanarak <simple_term>

Aşağıdaki örnek, ifade ya da içeren tüm ürünleri verir "Mountain"ya "Road".

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

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

C.İle CONTAINS kullanma <prefix_term>

Aşağıdaki örnek, tüm ürün adları önek zincirdeki başlayarak en az bir kelime ile verir Namesütun.

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

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

D.CONTAINS kullanma ve veya ile <prefix_term>

Aşağıdaki örnek verir ya da öneklerle dizelerini içeren tüm kategori açıklamaları "chain"ya "full".

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

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

E.İle CONTAINS kullanma <proximity_term>

Aşağıdaki örnek arama Production.ProductReviewmasa kelimesini içeren tüm yorumlar için "bike'' 10 kelime şartları içinde "control'' belirtilen sırayla (yani, burada "bike'' önündeki "control").

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

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

F.İle CONTAINS kullanma <generation_term>

Aşağıdaki örnekte arama formunun kelimelerle tüm ürünler için ride: "sürme," "basmış" vb..

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

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

G.İle CONTAINS kullanma <weighted_term>

Aşağıdaki örnekte arama sözcüklerini içeren tüm ürün adları için performance, comfortable, ya smooth, ve farklı ağırlık verilen her kelime için.

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

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

H.Değişkenleri ile CONTAINS kullanma

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

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

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

I.Bir mantıksal işleç (ve) ile CONTAINS kullanma

Aşağıdaki örnek ProductDescriptiontablo AdventureWorks2012 veritabanı. Sorgu CONTAINS içinde açıklama kimliği değil 5'e eşit açıklamaları arar ve açıklama içeren iki kelime Aluminumve sözcük spindle. Arama koşulu and Boole işleci kullanır.

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

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

J.Bir satır ekleme doğrulamak için CONTAINS kullanma

Aşağıdaki örnek, Seç alt sorgu içinde CONTAINS kullanır. Kullanarak AdventureWorks2012 veritabanı sorgu alır tüm yorumlar yorum değeri ProductReviewiçin belirli bir döngüsü tablosu. Arama koşulu and Boole işleci kullanır.

USE AdventureWorks2012;
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 r
JOIN Production.Product 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

USE AdventureWorks2012;
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 r
JOIN Production.Product 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.Belge özellik üzerinde sorgulama

Aşağıdaki sorgu bir dizinli özelliği, arama Title, Documentsütununda Production.Documenttablosu. Sorgu döndürür yalnızca belgeleri olan Titleözelliği dize içerir Maintenanceya Repair.

[!NOT]

Bir özellik satırları döndürmek arama için belirtilen özellik filtre ya da dizin oluşturma sırasında sütun ayrıştırma filtreleri ayıklamanız gerekir. Ayrıca, belirtilen tablo tam metin dizin özelliği içerecek şekilde yapılandırılmış olmalıdır. Daha fazla bilgi için, bkz. Arama belge özellikleri ile arama özellik listeleri.

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

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

Ayrıca bkz.

Görevler

Tam metin arama sorguları (Visual Veritabanı Araçları) oluştur

Başvuru

fulltext Katalog (Transact-sql) oluştur

fulltext INDEX (Transact-sql) oluştur

CONTAINSTABLE (Transact-sql)

freetext (Transact-sql)

freetexttable (Transact-sql)

NEREDE (Transact-sql)

Kavramlar

Tam metin arama ile başlamak

Oluşturma ve tam-metin katalogları yönetme

Oluşturun ve tam metin dizinleri Yönet

Tam metin arama sorgusuyla

Tam metin arama sorgusuyla

Tam metin araması (SQL Server)

Arama belge özellikleri ile arama özellik listeleri