Share via


CONTAINSTABLE (Transact-SQL)

Bir tablo sıfır, bir veya daha çok satır için kesin veya belirsiz (daha az hassas) eşleşen sözcükleri ve tümceleri, yakınlık içinde belirli bir uzaklığa bir başka bir sözcük veya ağırlıklı bir eşleşen karakter tabanlı veri türleri içeren bu sütunlar döndürür.Bu normal bir tablo adı gibi bir SELECT deyiminin FROM yan tümcesinde yalnızca CONTAINSTABLE başvurulabilir.

CONTAINSTABLE kullanarak sorguları, Değer (RANK) ve her satır için tam metin anahtarını (anahtar) derecelendirme bir uygunluğu veren tam metin sorguları içeren türü belirtin.CONTAINSTABLE işlev, aynı arama koşulu gerçek contaıns kullanır.

Topic link iconTransact-SQL sözdizimi kuralları

CONTAINSTABLE ( table , { column_name | (column_list ) | * } , ' < contains_search_condition > ' 
     [ , LANGUAGE language_term] 
  [ , top_n_by_rank ] 
          ) 
< contains_search_condition > ::= 
    { < simple_term > 
    | < prefix_term > 
    | < generation_term > 
    | < 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 ] ) 
< proximity_term > ::= 
     { < simple_term > | < prefix_term > } 
     { { NEAR | ~ } { < simple_term > | < prefix_term > } } [ ...n ] 
< weighted_term > ::= 
     ISABOUT
        ( { { 
  < simple_term > 
  | < prefix_term > 
  | < generation_term > 
  | < proximity_term > 
  } 
   [ WEIGHT ( weight_value ) ] 
   } [ ,...n ] 
        )

Bağımsız değişkenler

  • table
    Is the name of a table that has been full-text indexed.table can be a one-, two-, three-, or four-part database object name.Bir görünümü sorgularken, yalnızca bir tam metin dizini oluşturulmuş temel tablo dahil.

    table bir sunucu adı belirtemezsiniz ve sorgularda bağlantılı sunucularda kullanılamaz.

  • column_name
    Bir veya daha çok sütun için tam metin için dizin adını mı aranıyor.Sütun türü olabilir. char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, veya varbinary(max).

  • column_list
    Indicates that several columns, separated by a comma, can be specified.column_list must be enclosed in parentheses.Sürece language_term Belirtilen tüm sütunları dili column_list aynı olması gerekir.

  • *
    Tüm tam metin, sütun dizini belirtir. table Belirli bir arama koşulu için arama yapmak için kullanılır. Sürece language_term , tablonun tüm sütunlarını dilinin aynı olması gerekir belirtildi.

  • language_term LANGUAGE
    Sözcük bölme, dallanma, eşanlamlılar sözlüğü ve etkisiz sözcük için kullanılacak olan kaynakları dildir (veya stopword) sorgunun parçası olarak kaldırma.Bu parametre seçime bağlıdır ve bir dize, tamsayı veya onaltılık düzendeki bir değerin bir dil yerel ayar tanıtıcısını (LCID) için ilgili belirtilebilir.If language_term , onu temsil edecek bir dil için arama koşulu tüm öğeleri uygulanacak belirtildi. Değer belirtilmezse, sütun tam metin dili kullanılır.

    Farklı dillerde belgeler ikili büyük nesne (BLOB'lar) tek bir sütunda birlikte depolanıyorsa, belirli bir belgenin yerel ayar tanıtıcısını (LCID) hangi dil içeriğini indekslemek belirler.When querying such a column, specifying LANGUAGElanguage_term can increase the probability of a good match.

    Bir dize olarak belirtildiğinde language_term karşılık gelen DiğerAd sütun değerisys.syslanguages uyumluluk görüntüleyin.Dize gibi tek tırnak işareti içine alınmalıdır 'language_term'. Bir tamsayı belirtildiğinde language_term dili tanımlayan gerçek LCıD'tir. Onaltılık değer olarak, belirtilen language_term 0 x onaltılık LCID değeriyle izler. Onaltılık değer sıfır satır aralığı da dahil olmak üzere, sekiz basamak aşmamalıdır.

    If the value is in double-byte character set (DBCS) format, Microsoft SQL Server will convert it to Unicode.

    Belirtilen dil geçerli ya da orada değilse, kaynak bu dile karşılık gelen yüklenir SQL Server hata verir. Nötr dil kaynakları kullanmak için , 0x0 olarak belirtin. language_term.

  • top_n_by_rank
    Specifies that only the nhighest ranked matches, in descending order, are returned.Yalnızca bir tamsayı olduğunda, geçerlidir. nbelirtildi.If top_n_by_rank is combined with other parameters, the query could return fewer rows than the number of rows that actually match all the predicates.top_n_by_rank allows you to increase query performance by recalling only the most relevant hits.

  • <contains_search_condition>
    GÜNCELLEŞTİRME = column_namegrantee sütun varolan verilerde değişiklik yapabilirsiniz. Arama koşullarını hakkında daha fazla bilgi için bkz: CONTAINS (Transact-SQL).

Remarks

Tam metin yüklemleri ve tek bir tablo KIMDEN yüklemi örtük çalışma çalışır.Birden çok tabloyu aramak için , bir sonuç aramak için FROM yan tümcesinde birleştirilen tablo kullanmak küme olan iki veya daha fazla tablonun çarpımı.

tablo Bir sütun adı olan döndürdü. Anahtar tam metin anahtar değerleri içeren. Tam metin dizini oluşturulmuş tablo her sütun değerlerinin benzersiz olmasını garanti altına alınabileceğine ve döndürülen değerler sahip Anahtar sütun için tam metin anahtar değerleri belirtilen seçim ölçütü ile eşleşen satırları olan arama koşulu içerir.The TableFulltextKeyColumn özellik, obtained from the OBJECTPROPERTYEX işlev, provides the identity of this unique anahtar sütun.Tam metin anahtarını tam metin dizini ile ilişkili sütun KIMLIĞINI elde etmek için kullanın. sys.fulltext_indexes.Daha fazla bilgi için bkz:sys.fulltext_indexes (Transact-SQL).

Istediğiniz satırları özgün edinme tablo, birleşim ile CONTAINS belirtmek tablo satır.Normal formdur için CONTAINSTABLE kullanarak bir SELECT deyiminin FROM yan tümce:

SELECT select_list
FROM table AS FT_TBL INNER JOIN
   CONTAINSTABLE(table, column, contains_search_condition) AS KEY_TBL
   ON FT_TBL.unique_key_column = KEY_TBL.[KEY]

CONTAINSTABLE tarafından üretilen tablo adında sütun içerir. RÜTBE.The RANK sütun is a value (from 0 through 1000) for each row indicating how well a row matched the selection criteria.Rütbe bu değer genellikle deyim içinde bu şekilde kullanılır:

  • Tablonun birinci satır olarak highest-ranking satırları dönmek için ORDER BY yan tümcesinde.

  • Her satıra atanan rütbe değerini görmek için seçme listesinde.

Uyumluluk düzey 70'den küçük ise, anahtar sözcük olarak CONTAINSTABLE tanınmıyor.Daha fazla bilgi için bkz:sp_dbcmptlevel (Transact-SQL).

İzinler

yürütmek izinleri, yalnızca tablo veya başvurulan tablo sütunlarından SELECT uygun ayrıcalıklara sahip kullanıcılar tarafından kullanılabilir.

Örnekler

C.Rütbe değerleri CONTAINSTABLE kullanarak döndürme

Aşağıdaki örnek, sözcükleri breads, balık ve beers içeren tüm ürün adlarını arar ve farklı weightings her sözcük için verilir.Bu arama ölçütüne uyan döndürülen her satır için (değer derecelendirmesi) göreli bir closeness eşleşme olarak gösterilir.Buna ek olarak, en yüksek sıralamaya satırları ilk döndürülür.

USE Northwind;
GO
SELECT FT_TBL.CategoryName, FT_TBL.Description, KEY_TBL.RANK
    FROM Categories AS FT_TBL 
        INNER JOIN CONTAINSTABLE(Categories, Description, 
        'ISABOUT (breads weight (.8), 
        fish weight (.4), beers weight (.2) )' ) AS KEY_TBL
            ON FT_TBL.CategoryID = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC;
GO

b.Rütbe değerleri CONTAINSTABLE kullanarak belirtilen değerden büyük döndürülüyor

Aşağıdaki örnek, tüm yiyecek kategorileri açıklamasını ve kategori adını döndürür Description sütun sözcükleri içerir. "sweet and savory" Her iki sözcüğü sauces veya sözcük candies. Bir kategori adı olan tüm satırlar Seafood gözardı. Yalnızca bir sıra değeri olan satırları 2 veya daha yüksek döndürdü.

USE Northwind;
GO
SELECT FT_TBL.Description, FT_TBL.CategoryName, KEY_TBL.RANK
FROM Categories AS FT_TBL 
    INNER JOIN CONTAINSTABLE (Categories, Description, 
        '("sweet and savory" NEAR sauces) OR
        ("sweet and savory" NEAR candies)'
        ) AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK > 2
    AND FT_TBL.CategoryName <> 'Seafood'
ORDER BY KEY_TBL.RANK DESC;
GO

c.CONTAINSTABLE top_n_by_rank ile üst 10 ranked sonuçlar döndürülüyor

Aşağıdaki örnek, en iyi 10 yiyecek kategorileri açıklamasını ve kategori adını verir; burada Description"sauces" sözcüğü veya sözcük "candies", "Lezzetli ve savory" sözcükleri sütun içerir.

USE Northwind;
SELECT FT_TBL.Description, FT_TBL.CategoryName , KEY_TBL.RANK
FROM Categories AS FT_TBL 
    INNER JOIN CONTAINSTABLE (Categories, Description, 
        '("sweet and savory" NEAR sauces) OR
        ("sweet and savory" NEAR candies)', 10)
        AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY]

GO

d.Bağımsız değişken LANGUAGE belirtme

Kullanarak, aşağıdaki örnekte gösterildiği LANGUAGE bağımsız değişken.

USE Northwind;
SELECT FT_TBL.Description , FT_TBL.CategoryName , KEY_TBL.RANK
FROM dbo.Categories AS FT_TBL 
    INNER JOIN CONTAINSTABLE (dbo.Categories, Description, 
        '("sweet and savory" NEAR sauces) OR
        ("sweet and savory" NEAR candies)',LANGUAGE N'English', 10) 
        AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY];

Not

Dil language_term bağımsız değişkenkullanmak için gerekli değildir top_n_by_rank.