Megosztás a következőn keresztül:


TARTALMAZZA (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Pontos vagy homályos (kevésbé pontos) egyeztetésekre keresés egyetlen szóra és kifejezésre, bizonyos távolságra lévő szavakra vagy súlyozott egyezésekre SQL Serverben. A CONTAINS egy predikátum, amelyet egy Transact-SQL SELECT utasítás WHERE záradékában használnak SQL Server teljes szöveges keresésére teljes szövegű indexelt oszlopokon, amelyek karakteralapú adattípusokat tartalmaznak.

A CONTAINS keresheti a következőket:

  • Egy szó vagy kifejezés.

  • Egy szó vagy kifejezés előtagja.

  • Egy szó közel egy másik szóhoz.

  • Egy szó egy másik szóból emelt kitűzéssel (például a drive szó a drives, drive, driving és drive szó a redőzmény törzse).

  • Egy olyan szó, amely egy másik szó szinonimája (például a "fém" szó lehet olyan szinonimája, mint az alumínium és az acél).

Az SQL Server által támogatott teljes szöveges keresések formájával kapcsolatos információkért lásd: Lekérdezés Full-Text Keresési.

Transact-SQL szintaxis konvenciók

Szemantika

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
A FROM záradékban megadott teljes szövegű, indexelt oszlop a táblázatban. Az oszlopok lehetnek karakter, varchar, nchar, nvarchar, szöveg,,ntext, kép, xml, varbinaryvagy varbinary(max).

column_list
Két vagy több oszlopot jelöl meg, amelyeket vesszővel választanak el. column_list zárójelek közé kell tenni. Ha nincs megadva language_term, a column_list összes oszlopának nyelvének azonosnak kell lennie.

*
Megadja, hogy a lekérdezés a FROM klauzulában megadott teljes szövegű indexelt oszlopokat keresi a megadott keresési feltételhez. A CONTAINS záradék oszlopainak egyetlen táblából kell származnia, amelynek teljes szöveges indexe van. Ha nincs megadva language_term, a tábla összes oszlopának nyelvének azonosnak kell lennie.

TULAJDON ( column_name , 'property_name')
A következővonatkozik: SQL Server 2012 (11.x) és újabb.

Megad egy dokumentumtulajdonságot, amelyen a megadott keresési feltételt kereshetjük.

Fontos

Ahhoz, hogy a lekérdezés bármilyen sort visszaadjon, property_name meg kell határoznia a teljes szöveges index kereső tulajdonságlistájában, és a teljes szöveges indexnek tartalmaznia kell a tulajdonság-specifikus bejegyzéseket property_name számára. További információért lásd: Dokumentum tulajdonságok keresése Property listák keresésével.

NYELVI language_term
Ez a nyelv a szóbontáshoz, a stemmeléshez, a szószónos bővítéséhez és cseréjéhez, valamint a zajszó (vagy stopword) eltávolításához a lekérdezés részeként? Ez a paraméter nem kötelező.

Ha különböző nyelvű dokumentumokat bináris nagy objektumként (BLOB-ok) tárolnak egyetlen oszlopban, akkor egy adott dokumentum helyi azonosítója (LCID) határozza meg, melyik nyelven indexeljük a tartalmát. Egy ilyen oszlop lekérdezésekor a LANGUAGE language_term megadása növelheti a jó egyezés valószínűségét.

language_term megadható egy string, egész vagy hexadecimális értékként, amely megfelel egy nyelv LCID-ének. Ha language_term van megadva, a rendszer az általa képviselt nyelvet alkalmazza a keresési feltétel minden elemére. Ha nincs megadva érték, a rendszer a teljes szövegű oszlop nyelvét használja.

Ha karakterláncként van megadva, language_term megfelel a sys.syslanguages (Transact-SQL) kompatibilitási nézetben szereplő alias oszlop értékének. A sztringet idézőjelek közé kell foglalni, ahogyan a "language_term" kifejezésben is szerepel. Ha egész számként van megadva, language_term a nyelvet azonosító tényleges LCID. Ha hexadecimális értékként van megadva, a language_term 0x, majd az LCID hexadecimális értéke követi. A hexadecimális érték nem haladhatja meg a nyolc számjegyet, beleértve a kezdő nullákat is.

Ha az érték kétbájtos karakterkészlet (DBCS) formátumban van, az SQL Server Unicode-ra konvertálja.

Ha a megadott nyelv nem érvényes, vagy nincs telepített erőforrás, amely megfelelne annak a nyelvnek, az SQL Server hibát ad vissza. A semleges nyelvi erőforrások használatához adja meg a 0x0 language_term.

< contains_search_condition>
Megadja az column_name keresendő szöveget és az egyezés feltételeit.

<contains_search_condition>nvarchar. Implicit átalakítás akkor történik, ha egy másik karakter adattípust használ bemenetként. Nagy sztring típusú nvarchar(max) és varchar(max) nem használható. Az alábbi példában a @SearchWorddefiniált varchar(30) változó implicit konverziót okoz a CONTAINS predikátumban.

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

Mivel a "paramétersziffing" nem működik az átalakítás során, használja nvarchar a jobb teljesítmény érdekében. A példában deklarálja a @SearchWordnvarchar(30).

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

Használhatod az OPTIMIZE FOR lekérdezési tippet is olyan esetekben, amikor nem optimális terv keletkezik.

szó
Szóköz vagy írásjel nélküli karaktersorozat.

frázis
Egy vagy több szó, amelynek köze között van szó.

Megjegyzés:

Néhány nyelv, például az ázsiai egyes területeken írt, lehet olyan kifejezések, amelyek egy vagy több szóból állnak, közéjük távolság nélkül.

<simple_term>
Megadja a pontos szó vagy kifejezés egyezését. Érvényes egyszerű kifejezések példái a "kékbogyó", a kékáfonya és a "Microsoft SQL Server". A kifejezéseket kétszeres idézőjelben kell bezárni (""). A kifejezésben lévő szavaknak ugyanabban a sorrendben kell megjelenniük, mint ahogy az< contains_search_condition-ben> megjelöltük, ahogy az adatbázis oszlopban is megjelennek. A szóban vagy kifejezésben szereplők keresése nem kis- és nagybetűérzékeny. A zajszavak (vagy stopword) (például a, és, vagy the) teljes szöveges indexes oszlopokban nem tárolódnak a teljes szöveg indexben. Ha egyetlen szókeresésben zajszót használnak, az SQL Server hibaüzenetet ad vissza, jelezve, hogy a lekérdezés csak zajos szavakat tartalmaz. Az SQL Server tartalmaz egy szabványos zajszavak listáját az egyes SQL Server példányok \Mssql\Binn\FTERef könyvtárában.

A központjeleket figyelmen kívül hagyják. Ezért egy CONTAINS(testing, "computer failure") sor a "Hol van a számítógépem?" értékkel párosítjuk. Ha nem találnánk meg, az drága lenne." További információért a szómegszakító viselkedésről lásd : Szómegszakítók és Stemmerek konfigurálása és kezelése a kereséshez.

<prefix_term>
Megadja a megadott szöveggel kezdődő szavak vagy kifejezések egyezését. Csatolj egy előtagot idézőjelbe (""), és adj egy csillagot (*) a záró idézőjel elé, hogy az összes szöveg, amely a csillag előtt megadott egyszerű kifejezéssel kezdődik, egyeztessen. A záradékot így kell meghatározni: CONTAINS (column, '"text*"'). A csillag megegyezik nulla, egy vagy több karakterrel (a szó vagy kifejezés gyökének vagy szavaknak). Ha a szöveget és a csillagot nem különbözteti kétszeres idézőjel, így a predikátum így szólCONTAINS (column, 'text*'), a teljes szöveges keresés a csillagot karakterként tekinti, és pontos egyezéseket keres .text* A teljes szöveges motor nem talál csillagos (*) karakterű szavakat, mert a szótörők általában figyelmen kívül hagyják az ilyen karaktereket.

Ha <prefix_term> kifejezés, akkor minden a kifejezésben szereplő szó külön előtagnak számít. Ezért a "helyi bor*" előtagot tartalmazó lekérdezés megfelel minden sornak, amelyben szerepel a "helyi borászat", a "helyi borkóstolás és vacsora", és így tovább.

<generation_term>
Megadja a szavak egyezését, ha a mellékelt egyszerű kifejezések tartalmaznak az eredeti szó variánsát, amelyeket keresni.

INJEKCIÓS
Megadja, hogy a nyelvfüggő szárma a megadott egyszerű kifejezésen kell használni. A stemmer-viselkedést az adott nyelv stemme-szabályai alapján definiálják. A semleges nyelvhez nincs hozzá tartozó stemmer. A kérdezett oszlopok oszlopnyelve a kívánt stemmerre utal. Ha language_term meg van jelölve, akkor az adott nyelvhez tartozó szárnyot használják.

Egy adott <simple_term> egy <generation_term> belül nem egyezik meg sem főnévvel, sem igével.

TEZAURUSZ
Megadja, hogy a teljes szöveg oszlopának vagy a lekérdezésben megadott nyelvnek megfelelő szónonos szinaurust használják. A simple_term leghosszabb mintázatait <vagy mintáit párosítják a szónonoshoz, és további kifejezéseket generálnak, hogy bővítsék vagy helyettesítsék az eredeti mintát.> Ha az simple_term< egészére vagy részére> nem találnak egyezést, akkor a nem egyező részt simple_term-ként kezelik. További információért a teljes szöveges keresési szórószóró sznonosz leírásáért lásd: Konfiguráció és kezelés a szónonaxfájlok Full-Text kereséshez.

<generic_proximity_term>
Megadja a keresett dokumentumban lévő szavak vagy kifejezések egyezését.

Fontos

Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. Javasoljuk, hogy custom_proximity_term< használd>.

KÖZEL | ~
Jelzi, hogy a NEAR vagy ~ operátor mindkét oldalán lévő szónak vagy kifejezésnek egy dokumentumban kell lennie ahhoz, hogy az egyezés vissza legyen állítva. Két keresési kifejezést kell megadnod. Egy adott keresőszó lehet egyetlen szó, vagy olyan kifejezés, amelyet kétszeres idézőjelekkel (kifejezéssel) határolnak.

Több közelségi kifejezés láncolható, például a NEAR b NEAR c vagy a ~ b ~ c. A láncos közelségi feltételeknek mind benne kell lennie a dokumentumban ahhoz, hogy az egyezést visszakapják.

Például CONTAINS(*column_name*, 'fox NEAR chicken') és CONTAINSTABLE(*table_name*, *column_name*, 'fox ~ chicken') mindkettő visszaadja azokat a dokumentumokat a megadott oszlopban, amelyek tartalmazzák a "róka" és a "csirkét" is. Ezen felül a CONTAINSTABLE minden dokumentumhoz egy rangot ad a "róka" és a "csirke" közelsége alapján. Például, ha egy dokumentumban szerepel a "A róka megette a csirkét", akkor magas rangsora lenne, mert a kifejezések közelebb állnak egymáshoz, mint más dokumentumokban.

További információért a közönséges közelségi kifejezésekről lásd: Keresés a másik szóhoz közel lévő szavak NEAR-val.

<custom_proximity_term>
A következővonatkozik: SQL Server 2012 (11.x) és újabb.

Megadja a szavak vagy kifejezések egyezését, és választhatóként a keresési kifejezések közötti maximális távolságot. Azt is beállíthatod, hogy a keresési kifejezéseket pontosan abban a sorrendben kell megtalálni, ahogy megadod őket (<match_order>).

Egy adott keresőszó lehet egyetlen szó, vagy olyan kifejezés, amelyet kétszeres idézőjelekkel (kifejezéssel) határolnak. Minden meghatározott kifejezésnek benne kell lennie a dokumentumban ahhoz, hogy az egyezés vissza legyen állítva. Legalább két keresési kifejezést kell megadnod. A keresési kifejezések maximális száma 64.

Alapértelmezés szerint a testreszabott közelségi kifejezés visszaadja azokat a sorokat, amelyek tartalmazzák a megadott tagokat, függetlenül a köztes távolságtól és sorrendtől. Például, hogy a következő lekérdezést egyeztesse, egy dokumentumnak csak tartalmaznia term1 kell és "term3 term4" betűt bárhol, bármilyen sorrendben:

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

Az opcionális paraméterek a következők:

<maximum_distance>
Megadja a maximális távolságot a keresési kifejezések között a sorozat elején és végén ahhoz, hogy az adott sorozat egyezésnek minősüljön.

egész szám
Megad egy pozitív egész számot 0-tól 4294967295-ig. Ez az érték szabályozza, hány nem kereső kifejezés található az első és az utolsó keresési kifejezés között, kizárva a további meghatározott keresési kifejezéseket.

Például a következő lekérdezés keresi és AABB-t bármelyik sorrendben, legfeljebb öt távolságon belül.

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

A zsinór AA one two three four five BB egyezne a helyen. A következő példában a lekérdezés három keresési kifejezést jelöl meg, AA, BB, és CC legfeljebb öt távolságon belül:

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

Ez a lekérdezés egyezik a következő láncsorral, amelyben a teljes távolság öt:

BB one two CC three four five A A

Figyeld meg, hogy a belső kereső kifejezés, CC, nem számít bele.

MAX
Visszaadja azokat a sorokat, amelyek tartalmazzák a megadott tagokat, függetlenül a köztük lévő távolságtól. Ez az alapértelmezett érték.

<match_order>
Megadja, hogy a kifejezéseknek a megadott sorrendben kell előfordulniuk, hogy a keresési lekérdezés visszaadja őket. A match_order meghatározásához <maximum_distance> is meg kell nevezned<.>

<match_order> az alábbi értékek egyikét veszi fel:

TRUE
A meghatározott végzést határidőn belül érvényesíti. Például NEAR(A,B) csak A ... Ba .

FALSE
Figyelmen kívül hagyja a megadott sorrendet. Például NEAR(A,B) mindkettő és A ... BB ... A.

Ez az alapértelmezett érték.

Például a következő közelségi kifejezés a "Monday", "Tuesday" és "Wednesday" szavakat a megadott sorrendben keresi, függetlenül a közöttük lévő távolságtól:

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

További információért a testreszabott közelségi kifejezések használatáról lásd : Keresés egy másik szóhoz közel lévő szavak a NEAR-val.

<weighted_term>
Megadja, hogy a lekérdezés által visszaadott megfelelő sorok egy szó- és kifejezéslistához tartoznak, mindegyik opcionálisan súlyzó értéket kap.

ISABOUT
Megadja a< weighted_term> kulcsszót.

SÚLY(weight_value)
Megad egy súlyértéket, amely 0.0-tól 1.0-ig terjedő szám. A weighted_term< minden komponense> tartalmazhat egy weight_value. weight_value egy módja annak, hogy megváltoztassuk, hogyan befolyásolják a lekérdezés különböző részei a sorhoz rendelt rangértéket. A SÚLY nem befolyásolja a CONTAINS lekérdezések eredményét, de a SÚLY befolyásolja a rangsort a CONTAINSTABLE lekérdezésekben.

Megjegyzés:

A tizedesválasztó mindig pont, függetlenül az operációs rendszer helyéről.

{ ÉS | & } | { ÉS NEM | &! } | { VAGY | | }
Logikus műveletet határoz meg két tartalmazott keresési feltétel között.

{ ÉS | & }
Jelzi, hogy a két helyen lévő keresési feltételnek teljesíteni kell egy egyezéshez. Az ampersand (&) szimbólum használható az AND kulcsszó helyett, hogy az AND operátort képviselje.

{ ÉS NEM | &! }
Azt jelzi, hogy a második keresési feltétel nem lehet jelen egy egyezésnél. Az amperand és a felkiáltójel (&!) helyett használható az AND NOT kulcsszó helyett, hogy az AND NOT operátort jelölje.

{ VAGY | | }
Jelzi, hogy a kettő közül bármelyik keresési feltételnek teljesíteni kell a párosításhoz. A sáv szimbólum (|) használható az OR kulcsszó helyett, hogy az OR operátort jelölje.

Ha <contains_search_condition> zárójeles csoportokat tartalmaz, ezeket a zárójeles csoportokat értékelik először. Zárójeles csoportok értékelése után ezek a szabályok érvényesek, amikor ezeket a logikai operátorokat használjuk, amelyek keresési feltételeket tartalmaznak:

  • A NOT (NOT) használata előtt is érvényesül.

  • A NOT csak az ÉS után fordulhat elő, vagyis ÉS NEM. Az OR NEM kezelő nem engedélyezett. A NOT nem lehet az első ciklus előtt meghatározni. Például nem CONTAINS (mycolumn, 'NOT "phrase_to_search_for" ' ) érvényes.

  • Az AND a műtőállás előtt van alkalmazva.

  • Az azonos típusú boole-operátorok (ÉS, OR) asszociatívak, ezért bármilyen sorrendben alkalmazhatók.

n
Helymeghatározó egy helymeghatározó, hogy több TARTALMAZ keresési feltételt és kifejezést bennük.

Általános megjegyzések

A teljes szöveges predikátumok és függvények egyetlen táblán működnek, amelyet a FROM predikátum feltételez. Ha több táblában szeretne keresni, a FROM záradékban egy csatlakoztatott táblával kereshet két vagy több tábla termékét tartalmazó eredményhalmazban.

Ha az adatbázis kompatibilitási szintje 100- ra van állítva, a teljes szöveges predikátumok nem engedélyezettek a OUTPUT záradékban,.

Távoli kiszolgálók lekérdezése

Négyrészes nevet használhatsz a CONTAINS vagy FREETEXT predikátumban, hogy teljes szövegű, indexelt oszlopokat kérj a céltáblák egy összekapcsolt szerveren. Ha egy távoli kiszolgálót teljes szöveges lekérdezések fogadására szeretne előkészíteni, hozzon létre egy teljes szöveges indexet a távoli kiszolgálón lévő céltáblákon és oszlopokon, majd adja hozzá a távoli kiszolgálót csatolt kiszolgálóként.

A teljes szöveges kereséssel ellentétben a LIKETransact-SQL predikátum csak karaktermintákon működik. Emellett a LIKE predikátum nem használható formázott bináris adatok lekérdezésére. Emellett a LIKE-lekérdezések nagy mennyiségű strukturálatlan szöveges adattal szemben sokkal lassabbak, mint az azonos adatokra vonatkozó teljes szöveges lekérdezések. Egy LIKE lekérdezés több millió sor szöveges adat ellen percekig is visszanyerhet; míg egy teljes szöveges lekérdezés ugyanazon az adat ellen csak másodperceket vagy kevesebbet is igénybe vehet, attól függően, hány sor visszatér és azok mérete. Egy másik szempont, hogy az LIKE csak egy egyszerű mintás szkennelést végez egy egész tábláról. Ezzel szemben a teljes szöveges lekérdezés nyelvtudatos, specifikus transzformációkat alkalmaz az index- és lekérdezési időben, például stopword-szűréssel, valamint szónonom és inflexionális kiterjesztések készítésével. Ezek a transzformációk segítik a teljes szöveges lekérdezéseket abban, hogy javítsák az emlékezetüket és az eredmények végső rangsorolását.

Több oszlopot is lekérdezhetsz, ha megadsz egy keresendő oszloplistát. Az oszlopoknak ugyanabból a táblázatból kell származniuk.

Például az alábbi TARTALMAZ lekérdezési kereséseket a Red kifejezésre az Name AdventureWorks2025 mintaadatbázis táblázatának és Color oszlopaiban Production.Product .

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

Példák

A. CONTAINS használata simple_term <>

Az alábbi példa minden olyan terméket talál, amelynek ára $80.99 tartalmazza a szót Mountain.

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

B. CONTAINS-t és phrase-t használva <simple_term>

A következő példa minden szorzatot visszaad, amelyek tartalmazzák a kifejezést Mountain , vagy Road.

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

C. CONTAINS használata prefix_term <>

A következő példa minden terméknevet legalább egy szóval, amely az oszlopban a lánc Name előtagjával kezdődik.

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

D. CONTAINS és OR használatával prefix_term <>

A következő példa minden olyan kategórialeírást ad, amely tartalmaz stringeket vagy vagy az előtagokkal chainfull.

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

E. CONTAINS használata proximity_term <>

A következővonatkozik: SQL Server 2012 (11.x) és újabb.

A következő példa a Production.ProductReview táblázatban keresi az összes olyan hozzászólást, amely tartalmazza a szót bike a "" szócontrol 10 tagján belül, a megadott sorrendben (azaz ahol "bike" előzi a "control"").

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

F. CONTAINS használata generation_term <>

Az alábbi példa keresi az összes olyan terméket, amelynek a következő rideszavak szerepelnek: riding, ridden, stb.

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

G. CONTAINS használata weighted_term <>

Az alábbi példa az összes olyan terméknevet keresi, amely tartalmazza a szavakat performance, comfortablevagy smooth, és különböző súlyokat ad az egyes szavaknak.

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

H. CONTAINS használata változókkal

Az alábbi példa egy változót használ egy adott keresési kifejezés helyett.

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

I. CONTAINS használata logikai operátorral (AND)

A következő példa az adatbázis ProductDescription tábláját AdventureWorks2025 használja. A lekérdezés a CONTAINS predikátumot használja olyan leírások keresésére, amelyekben a leírási azonosító nem egyenlő 5-ös, és a leírás tartalmazza mind a szót Aluminum , mind a szót spindle. A keresési feltétel az AND Boolean operátort használja.

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

J. CONTAINS használata a sorbehelyezés ellenőrzésére

A következő példa a CONTAINS függvényt használja egy SELECT allekérdezésen belül. AdventureWorks2025 Az adatbázis segítségével a lekérdezés megkapja az adott ciklusban a ProductReview táblában szereplő összes hozzászólás értékét. A keresési feltétel az AND Boolean operátort használja.

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. Lekérdezés egy dokumentum tulajdonságán

A következővonatkozik: SQL Server 2012 (11.x) és újabb.

A következő lekérdezés egy indexelt tulajdonságon, Title, keres a Document tábla oszlopában Production.Document . A lekérdezés csak azokat a dokumentumokat adja vissza, amelyek Title tulajdonságai tartalmazza a stringet Maintenance vagy Repair.

Megjegyzés:

Ahhoz, hogy egy tulajdonságkeresés sorokat hozzon vissza, az indexeléskor az oszlopot elemző szűrőnek vagy szűrőknek ki kell nyerniük a megadott tulajdonságot. Emellett a megadott tábla teljes szöveges indexét be kell állítani, hogy tartalmazza a tulajdonságot. További információért lásd: Dokumentum tulajdonságok keresése Property listák keresésével.

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

Lásd még:

Első lépések a Full-Text Kereséshez
Full-Text katalógusok létrehozása és kezelése
TELJES SZÖVEGES KATALÓGUS LÉTREHOZÁSA (Transact-SQL)
TELJES SZÖVEGŰ INDEX LÉTREHOZÁSA (Transact-SQL)
Full-Text indexek létrehozása és kezelése
Lekérdezés Full-Text Keresés
CONTAINSTABLE (Transact-SQL)
SZABADSZÖVEG (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
Lekérdezés Full-Text Keresés
Full-Text Keresés
Full-Text keresési lekérdezések (Visual Database Tools) létrehozása
AHOL (Transact-SQL)
keresési dokumentum tulajdonságai keresési tulajdonságlistákkal