Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Zoekopdrachten naar precieze of vage (minder precieze) matches op losse woorden en zinnen, woorden binnen een bepaalde afstand van elkaar, of gewogen matches in SQL Server. CONTAINS is een predicaat dat wordt gebruikt in de WHERE-clausule van een Transact-SQL SELECT-instructie om een SQL Server-full-text zoekopdracht uit te voeren op full-text geïndexeerde kolommen met tekengebaseerde datatypes.
CONTAINS kan zoeken naar:
Een woord of zin.
Het voorvoegsel van een woord of uitdrukking.
Een woord dicht bij een ander woord.
Een woord dat inflectiegegenereerd wordt door een ander (bijvoorbeeld, het woord drive is de verbuigingsstam van drives, drove, driving, en driven).
Een woord dat synoniem is van een ander woord dat een thesaurus gebruikt (bijvoorbeeld het woord "metaal" kan synoniemen hebben zoals "aluminium" en "staal").
Zie Query met Full-Text Searchvoor informatie over de vormen van zoekopdrachten in volledige tekst die worden ondersteund door SQL Server.
Transact-SQL syntaxis-conventies
Syntaxis
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
Is de naam van een full-text geïndexeerde kolom van de tabel die in de FROM-clausule is gespecificeerd. De kolommen kunnen van het type
column_list
Geeft twee of meer kolommen aan, gescheiden door komma's.
column_list moet tussen haakjes staan. Tenzij language_term is opgegeven, moet de taal van alle kolommen van column_list hetzelfde zijn.
*
Specificeert dat de zoekopdracht alle full-text geïndexeerde kolommen doorzoekt in de tabel die is gespecificeerd in de FROM-clausule voor de gegeven zoekvoorwaarde. De kolommen in de CONTAINS-clausule moeten afkomstig zijn van één enkele tabel met een volledige tekstindex. Tenzij language_term is opgegeven, moet de taal van alle kolommen van de tabel hetzelfde zijn.
EIGENDOM ( column_name , 'property_name')
Van toepassing op: SQL Server 2012 (11.x) en hoger.
Specificeert een documenteigenschap waarop gezocht moet worden naar de gespecificeerde zoekvoorwaarde.
Belangrijk
Om de zoekopdracht rijen te laten teruggeven, moet property_name worden gespecificeerd in de zoek-eigenschapslijst van de volledige tekst index en moet de volledige tekstindex eigenschapsspecifieke vermeldingen voor property_name bevatten. Voor meer informatie, zie Zoek Documenteigenschappen met Zoeken Eigendomslijsten.
TAAL language_term
Is de taal die gebruikt moet worden voor woordbreken, stemming, thesaurusuitbreidingen en -vervangingen, en het verwijderen van ruiswoorden (of stopwoorden) als onderdeel van de zoekopdracht. Deze parameter is optioneel.
Als documenten van verschillende talen samen worden opgeslagen als binaire grote objecten (BLOBs) in één kolom, bepaalt de locale identifier (LCID) van een bepaald document welke taal gebruikt moet worden om de inhoud te indexeren. Bij het uitvoeren van query's op een dergelijke kolom kan het opgeven van LANGUAGE language_term de kans op een goede overeenkomst verhogen.
language_term kan worden gespecificeerd als een string-, integer- of hexadecimale waarde die overeenkomt met de LCID van een taal. Als language_term is opgegeven, wordt de taal die wordt opgegeven, toegepast op alle elementen van de zoekvoorwaarde. Als er geen waarde is opgegeven, wordt de volledige teksttaal van de kolom gebruikt.
Wanneer het als string wordt gespecificeerd, komt language_term overeen met de alias-kolomwaarde in de sys.syslanguages (Transact-SQL) compatibiliteitsweergave. De tekenreeks moet tussen enkele aanhalingstekens staan, zoals in 'language_term'. Wanneer dit is opgegeven als een geheel getal, is language_term de werkelijke LCID die de taal identificeert. Wanneer deze waarde is opgegeven als een hexadecimale waarde, wordt language_term 0x gevolgd door de hexadecimale waarde van de LCID. De hexadecimale waarde mag niet groter zijn dan acht cijfers, inclusief voorloopnullen.
Als de waarde de DBCS-indeling (Double-Byte Character Set) heeft, wordt deze door SQL Server geconverteerd naar Unicode.
Als de gespecificeerde taal niet geldig is of er geen bronnen zijn geïnstalleerd die overeenkomen met die taal, geeft SQL Server een foutmelding terug. Als u de neutrale taalbronnen wilt gebruiken, geeft u 0x0 op als language_term.
<
contains_search_condition>
Hiermee geeft u de tekst op die moet worden gezocht in column_name en de voorwaarden voor een overeenkomst.
<contains_search_condition> is nvarchar. Een impliciete conversie vindt plaats wanneer een ander tekengegevenstype wordt gebruikt als invoer. Grote tekenreeksgegevenstypen nvarchar(max) en varchar(max) kunnen niet worden gebruikt. In het volgende voorbeeld veroorzaakt de @SearchWord variabele, die is gedefinieerd als varchar(30), een impliciete conversie in het predicaat CONTAINS.
USE AdventureWorks2022;
GO
DECLARE @SearchWord VARCHAR(30)
SET @SearchWord ='performance'
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, @SearchWord);
Omdat 'parameter-sniffing' niet werkt voor conversie, gebruikt u nvarchar- voor betere prestaties. Declareer in het voorbeeld @SearchWord als nvarchar(30).
USE AdventureWorks2022;
GO
DECLARE @SearchWord NVARCHAR(30)
SET @SearchWord = N'performance'
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, @SearchWord);
Je kunt ook de OPTIMIZE FOR-querytip gebruiken voor gevallen waarin een niet-optimaal plan wordt gegenereerd.
woord
Is een reeks tekens zonder spaties of interpunctie.
frase
Is één of meer woorden met spaties tussen elk woord.
Opmerking
Sommige talen, zoals die in sommige delen van Azië geschreven worden, kunnen zinnen bevatten die uit één of meer woorden bestaan zonder spaties ertussen.
<simple_term>
Specificeert een overeenkomst voor een exact woord of een uitdrukking. Voorbeelden van geldige eenvoudige termen zijn "blue berry", blueberry en "Microsoft SQL Server". Zinnen moeten worden omsloten met dubbele aanhalingstekens (""). Woorden in een zin moeten in dezelfde volgorde voorkomen als gespecificeerd in <contains_search_condition> als in de databasekolom. De zoektocht naar tekens in het woord of de uitdrukking is niet hoofdlettergevoelig. Ruiswoorden (of stopwoorden) (zoals a, en, of the) in full-text geïndexeerde kolommen worden niet opgeslagen in de full-text index. Als een ruiswoord wordt gebruikt in een zoekopdracht met één woord, geeft SQL Server een foutmelding terug die aangeeft dat de zoekopdracht alleen ruiswoorden bevat. SQL Server bevat een standaardlijst van ruiswoorden in de map \Mssql\Binn\FTERef van elke instantie van SQL Server.
Interpunctie wordt genegeerd. Daarom CONTAINS(testing, "computer failure") komt een rij overeen met de waarde "Waar is mijn computer? Het niet vinden ervan zou duur zijn." Voor meer informatie over het gedrag van woordbrekers, zie Configureer en beheer Woordbrekers en Stemmers voor Zoek.
<prefix_term>
Specificeert een overeenkomst van woorden of uitdrukkingen beginnend met de opgegeven tekst. Voeg een voorvoegsel in dubbele aanhalingstekens ("") en voeg een asterisk (*) toe vóór het eindaanhalingsteken, zodat alle tekst die begint met de eenvoudige term vóór het sterretje wordt overeengemeten. De clausule moet als volgt worden gespecificeerd: CONTAINS (column, '"text*"'). Het sterretje komt overeen met nul, één of meer tekens (van het stamwoord of de woorden in het woord of de uitdrukking). Als de tekst en het sterretje niet worden afgebakend door dubbele aanhalingstekens, zodat het predicaat luidt CONTAINS (column, 'text*'), beschouwt de volledige tekstzoekopdracht het asterisk als een teken en zoekt naar exacte overeenkomsten met text*. De full-text engine zal geen woorden met het sterretje (*) vinden omdat woordbrekers dergelijke tekens meestal negeren.
Wanneer <prefix_term> een uitdrukking is, wordt elk woord in de uitdrukking beschouwd als een apart voorvoegsel. Daarom komt een query die een voorvoegselterm van 'lokale wijn*' opgeeft overeen met rijen met de tekst 'lokaal wijnhuis', 'lokaal gegeten en gedronken' en dergelijke.
<generation_term>
Specificeert een overeenkomst van woorden wanneer de bijgevoegde eenvoudige termen varianten van het oorspronkelijke woord bevatten waarnaar gezocht moet worden.
INBUIGING
Specificeert dat de taalafhankelijke stemmer gebruikt moet worden op de gespecificeerde eenvoudige term. Stemmer-gedrag wordt gedefinieerd op basis van stemmingregels van elke specifieke taal. De neutrale taal heeft geen bijbehorende stemmer. De kolomtaal van de kolommen die worden geraadpleegd wordt gebruikt om te verwijzen naar de gewenste stemmer. Als language_term wordt gespecificeerd, wordt de stemmer die bij die taal hoort gebruikt.
Een gegeven <simple_term> binnen een <generation_term> zal niet overeenkomen met zowel zelfstandige naamwoorden als werkwoorden.
THESAURUS
Geeft aan dat de thesaurus die overeenkomt met de kolom full-text taal, of de taal die in de query wordt gespecificeerd, wordt gebruikt. Het langste patroon of patronen uit de <simple_term> worden gekoppeld aan de thesaurus en er worden extra termen gegenereerd om het oorspronkelijke patroon uit te breiden of te vervangen. Als er geen match wordt gevonden voor het hele of een deel van de <simple_term>, wordt het niet-matchende deel als een simple_term behandeld. Voor meer informatie over de full-text search thesaurus, zie Configureren en Beheren Thesaurusbestanden voor Full-Text Search.
<generic_proximity_term>
Specificeert een overeenkomst van woorden of uitdrukkingen die in het document moeten staan dat wordt doorzocht.
Belangrijk
Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie. We raden aan om custom_proximity_term< te gebruiken>.
NEAR | ~
Geeft aan dat het woord of de uitdrukking aan weerszijden van de operator NEAR of ~ in een document moet voorkomen om een match te kunnen teruggeven. Je moet twee zoektermen opgeven. Een gegeven zoekterm kan een enkel woord zijn of een uitdrukking die wordt afgebakend door dubbele aanhalingstekens ("frase").
Verschillende nabijheidstermen kunnen worden gekoppeld, zoals in a NEAR b NEAR c of a ~ b ~ c. Geketende nabijheidstermen moeten allemaal in het document staan om een match te laten worden geretourneerd.
Bijvoorbeeld, CONTAINS(*column_name*, 'fox NEAR chicken') en CONTAINSTABLE(*table_name*, *column_name*, 'fox ~ chicken') zouden beide documenten in de opgegeven kolom teruggeven die zowel "fox" als "chicken" bevatten. Daarnaast geeft CONTAINSTABLE een rang terug voor elk document op basis van de nabijheid van "vos" en "kip". Als een document bijvoorbeeld de zin bevat: "De vos at de kip," zou de rangorde hoog zijn omdat de termen dichter bij elkaar liggen dan in andere documenten.
Voor meer informatie over generieke nabijheidstermen, zie Search for Words Close to Another Word with NEAR.
<custom_proximity_term>
Van toepassing op: SQL Server 2012 (11.x) en hoger.
Specificeert een overeenkomst tussen woorden of uitdrukkingen, en optioneel de maximale afstand tussen zoektermen. Je kunt ook specificeren dat zoektermen in de exacte volgorde moeten worden gevonden waarin je ze opgeeft (<match_order>).
Een gegeven zoekterm kan een enkel woord zijn of een uitdrukking die wordt afgebakend door dubbele aanhalingstekens ("frase"). Elke opgegeven term moet in het document staan om een match te kunnen retourneren. Je moet ten minste twee zoektermen opgeven. Het maximale aantal zoektermen is 64.
Standaard geeft de aangepaste nabijheidsterm alle rijen terug die de opgegeven termen bevatten, ongeacht de tussenliggende afstand en ongeacht hun volgorde. Om bijvoorbeeld aan de volgende query te voldoen, hoeft een document simpelweg overal en "term1" te bevattenterm3 term4, in willekeurige volgorde:
CONTAINS(column_name, 'NEAR(term1,"term3 term4")')
De optionele parameters zijn als volgt:
<maximum_distance>
Specificeert de maximale afstand die is toegestaan tussen de zoektermen aan het begin en einde van een string zodat die string als match kan worden beschouwd.
geheel getal
Specificeert een positief geheel getal van 0 tot 4294967295. Deze waarde bepaalt hoeveel niet-zoektermen er tussen de eerste en laatste zoektermen kunnen voorkomen, exclusief eventuele aanvullende gespecificeerde zoektermen.
Bijvoorbeeld, de volgende zoekopdracht zoekt naar AA en BB, in welke volgorde dan ook, binnen een maximale afstand van vijf.
CONTAINS(column_name, 'NEAR((AA,BB),5)')
De draad AA one two three four five BB zou een match zijn. In het volgende voorbeeld specificeert de zoekopdracht voor drie zoektermen, AA, , BBen CC binnen een maximale afstand van vijf:
CONTAINS(column_name, 'NEAR((AA,BB,CC),5)')
Deze query zou overeenkomen met de volgende string, waarbij de totale afstand vijf is:
BB one two CC three four five A A
Let op dat de binnenste zoekterm, CC, niet wordt meegeteld.
MAX
Geeft alle rijen terug die de opgegeven termen bevatten, ongeacht de afstand ertussen. Dit is de standaardwaarde.
<match_order>
Specificeert of de termen in de gespecificeerde volgorde moeten voorkomen om door een zoekopdracht te worden teruggegeven. Om match_order te specificeren<, moet je ook maximum_distance> specificeren<.>
<match_order> neemt een van de volgende waarden aan:
WAAR
Handhaaft de gespecificeerde volgorde binnen de voorwaarden. Bijvoorbeeld, NEAR(A,B) zou alleen A ... Bovereenkomen met .
FALSE
Negeert de opgegeven volgorde. Bijvoorbeeld, NEAR(A,B) zou zowel A ... B als B ... Aovereenkomen.
Dit is de standaardwaarde.
Bijvoorbeeld, de volgende nabijheidsterm zoekt de woorden "",Monday "Tuesday" en "Wednesday" in de opgegeven volgorde met ongeacht de afstand ertussen:
CONTAINS(column_name, 'NEAR ((Monday, Tuesday, Wednesday), MAX, TRUE)')
Voor meer informatie over het gebruik van aangepaste nabijheidstermen, zie Search for Words Close to Another Word with NEAR.
<weighted_term>
Specificeert dat de overeenkomende rijen (die door de query worden teruggegeven) overeenkomen met een lijst van woorden en zinnen, elk optioneel met een wegingswaarde.
ISABOUT
Specificeert het <weighted_term> trefwoord.
GEWICHT(weight_value)
Geeft een gewichtwaarde aan, een getal van 0,0 tot en met 1,0. Elke component in <weighted_term> kan een weight_value bevatten.
weight_value is een manier om te veranderen hoe verschillende delen van een query de rangwaarde beïnvloeden die aan elke rij overeenkomt met de query. WEIGHT beïnvloedt de resultaten van CONTAINS queries niet, maar WEIGHT beïnvloedt de rang in CONTAINSTABLE queries.
Opmerking
De decimale scheider is altijd een punt, ongeacht de locatie van het besturingssysteem.
{ EN | & } | { EN NIET | &! } | { OF | | }
Specificeert een logische operatie tussen twee bevat zoekvoorwaarden.
{ EN | & }
Geeft aan dat aan de zoekvoorwaarden voor een match moet worden voldaan. Het ampersand-symbool (&) kan worden gebruikt in plaats van het EN-sleutelwoord om de EN-operator weer te geven.
{ EN NIET | &! }
Geeft aan dat de tweede zoekvoorwaarde niet aanwezig mag zijn voor een match. Het ampersand gevolgd door het uitroepteken (&!) kan worden gebruikt in plaats van het AND NOT-sleutelwoord om de operator AND NOT weer te geven.
{ OF | | }
Geeft aan dat een van de twee zoekvoorwaarden moet worden vervuld voor een match. Het balksymbool (|) kan in plaats van het OF-sleutelwoord worden gebruikt om de OF-operator weer te geven.
Wanneer <contains_search_condition> haakjesgroepen bevat, worden deze parenthesize-groepen eerst geëvalueerd. Na het evalueren van parenthesized groepen zijn deze regels van toepassing bij gebruik van deze logische operatoren met bevat zoekvoorwaarden:
NOT wordt toegepast vóór AND.
NOT kan alleen na AND voorkomen, zoals in AND NOT. De OR NOT-operator is niet toegestaan. NOT kan niet vóór de eerste termijn worden gespecificeerd. Bijvoorbeeld,
CONTAINS (mycolumn, 'NOT "phrase_to_search_for" ' )is niet geldig.AND wordt toegepast vóór OR.
Booleaanse operatoren van hetzelfde type (EN, OF) zijn associatief en kunnen daarom in elke volgorde worden toegepast.
n
Is een tijdelijke aanduiding dat meerdere zoekvoorwaarden en termen in CONTAINS daarin kunnen worden gespecificeerd.
Algemene opmerkingen
Predicaten en functies in volledige tekst werken in één tabel, die wordt geïmpliceerd in het predicaat FROM. Als u in meerdere tabellen wilt zoeken, gebruikt u een gekoppelde tabel in uw FROM-component om te zoeken naar een resultatenset die het product is van twee of meer tabellen.
Predicaten voor volledige tekst zijn niet toegestaan in de OUTPUT-component wanneer het compatibiliteitsniveau van de database is ingesteld op 100.
Query's uitvoeren op externe servers
Je kunt een vierdelige naam gebruiken in het CONTAINS of FREETEXT-predicaat om full-text geïndexeerde kolommen van de doeltabellen op een gekoppelde server te bevragen. Als u een externe server wilt voorbereiden voor het ontvangen van query's in volledige tekst, maakt u een volledige-tekstindex op de doeltabellen en -kolommen op de externe server en voegt u de externe server vervolgens toe als een gekoppelde server.
Vergelijking van VIND-IK-LEUK aan Full-Text Zoeken
In tegenstelling tot zoeken in volledige tekst werkt de predicaat LIKETransact-SQL predicaat alleen op tekenpatronen. U kunt het predicaat LIKE ook niet gebruiken om opgemaakte binaire gegevens op te vragen. Bovendien is een LIKE-query voor een grote hoeveelheid ongestructureerde tekstgegevens veel trager dan een equivalente volledige-tekstquery voor dezelfde gegevens. Een LIKE-query tegen miljoenen rijen tekstgegevens kan minuten duren om terug te komen; terwijl een volledige tekstquery slechts enkele seconden of minder kan duren voor dezelfde data, afhankelijk van het aantal geretourneerde rijen en hun grootte. Een andere overweging is dat LIKE slechts een eenvoudige patroonscan van een hele tabel uitvoert. Een full-text query daarentegen is taalbewust, waarbij specifieke transformaties worden toegepast op index- en querytijd, zoals het filteren van stopwoorden en het maken van thesaurus- en verbuigingsuitbreidingen. Deze transformaties helpen full-text queries hun geheugen en de uiteindelijke rangschikking van hun resultaten te verbeteren.
Meerdere kolommen opvragen (Full-Text zoeken)
Je kunt meerdere kolommen opvragen door een lijst met kolommen te specificeren om te doorzoeken. De kolommen moeten uit dezelfde tabel komen.
Bijvoorbeeld, de volgende CONTAINS zoekt naar de term Red in de Name kolommen en Color kolommen van de Production.Product tabel van de AdventureWorks2025 voorbeelddatabase.
Use AdventureWorks2022;
GO
SELECT Name, Color
FROM Production.Product
WHERE CONTAINS((Name, Color), 'Red');
Voorbeelden
Eén. CONTAINS gebruiken met <simple_term>
Het volgende voorbeeld toont alle producten met een prijs van $80.99 die het woord Mountainbevatten.
USE AdventureWorks2022;
GO
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice = 80.99
AND CONTAINS(Name, 'Mountain');
GO
B. CONTAINS gebruiken en een frase met <simple_term>
Het volgende voorbeeld geeft alle producten terug die ofwel de term Mountain of Roadbevatten.
USE AdventureWorks2022;
GO
SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, ' Mountain OR Road ')
GO
C. CONTAINS gebruiken met <prefix_term>
Het volgende voorbeeld geeft alle productnamen terug met ten minste één woord dat begint met de prefixketen in de Name kolom.
USE AdventureWorks2022;
GO
SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, ' "Chain*" ');
GO
D. CONTAINS en OR gebruiken met <prefix_term>
Het volgende voorbeeld geeft alle categoriebeschrijvingen terug die strings bevatten met prefixen van ofwel chain of full.
USE AdventureWorks2022;
GO
SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, '"chain*" OR "full*"');
GO
E. CONTAINS gebruiken met <proximity_term>
Van toepassing op: SQL Server 2012 (11.x) en hoger.
Het volgende voorbeeld doorzoekt de Production.ProductReview tabel naar alle opmerkingen die het woord bike binnen 10 termen van het woord "control" bevatten en in de opgegeven volgorde (dat wil zeggen, waarbij "bike" voorafgaat aan "control").
USE AdventureWorks2022;
GO
SELECT Comments
FROM Production.ProductReview
WHERE CONTAINS(Comments , 'NEAR((bike,control), 10, TRUE)');
GO
F. CONTAINS gebruiken met <generation_term>
Het volgende voorbeeld zoekt naar alle producten met woorden van de vorm ride: riding, ridden, enzovoort.
USE AdventureWorks2022;
GO
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, ' FORMSOF (INFLECTIONAL, ride) ');
GO
G. CONTAINS gebruiken met <weighted_term>
In het volgende voorbeeld wordt gezocht naar alle productnamen met de woorden performance, comfortableof smooth, en er worden verschillende gewichten aan elk woord gegeven.
USE AdventureWorks2022;
GO
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, 'ISABOUT (performance weight (.8),
comfortable weight (.4), smooth weight (.2) )' );
GO
H. CONTAINS gebruiken met variabelen
In het volgende voorbeeld wordt een variabele gebruikt in plaats van een specifieke zoekterm.
USE AdventureWorks2022;
GO
DECLARE @SearchWord NVARCHAR(30)
SET @SearchWord = N'Performance'
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, @SearchWord);
GO
I. CONTAINS gebruiken met een logische operator (EN)
Het volgende voorbeeld gebruikt de ProductDescription-tabel van de AdventureWorks2025 database. De query gebruikt het CONTAINS-predicaat om te zoeken naar beschrijvingen waarbij de beschrijvings-ID niet gelijk is aan 5 en de beschrijving zowel het woord Aluminum als het woord spindlebevat. De zoekvoorwaarde gebruikt de AND Booleaanse operator.
USE AdventureWorks2022;
GO
SELECT Description
FROM Production.ProductDescription
WHERE ProductDescriptionID <> 5 AND
CONTAINS(Description, 'Aluminum AND spindle');
GO
J. CONTAINS gebruiken om een rijinvoeging te verifiëren
Het volgende voorbeeld gebruikt CONTAINS binnen een SELECT-subquery. Met behulp van de AdventureWorks2025 database verkrijgt de query de commentaarwaarde van alle opmerkingen in de ProductReview-tabel voor een bepaalde cyclus. De zoekvoorwaarde gebruikt de AND Booleaanse operator.
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. Query's op een documenteigenschap
Van toepassing op: SQL Server 2012 (11.x) en hoger.
De volgende zoekopdracht zoekt naar een geïndexeerde eigenschap, Title, in de Document kolom van de Production.Document tabel. De query levert alleen documenten terug waarvan de Title eigenschap de string Maintenance of Repairbevat.
Opmerking
Om een eigenschapszoekopdracht rijen terug te geven, moeten het filter of de filters die de kolom tijdens het indexeren parsen de gespecificeerde eigenschap extraheren. Ook moet de volledige tekstindex van de opgegeven tabel zijn geconfigureerd om de eigenschap op te nemen. Voor meer informatie, zie Zoek Documenteigenschappen met Zoeken Eigendomslijsten.
Use AdventureWorks2022;
GO
SELECT Document
FROM Production.Document
WHERE CONTAINS(PROPERTY(Document,'Title'), 'Maintenance OR Repair');
GO
Zie ook
Aan de slag met Full-Text Search-
Full-Text catalogi maken en beheren
FULLTEXT CATALOG (Transact-SQL) maken
FULLTEXT-INDEX MAKEN (Transact-SQL)
Full-Text indexen maken en beheren
de query uitvoeren met Full-Text
CONTAINSTABLE (Transact-SQL)
VRIJTEKST (Transact-SQL)
VRIJTEKSTTABEL (Transact-SQL)
de query uitvoeren met Full-Text
Zoekopdracht in volledige tekst
Full-Text Search Query's (Visual Database Tools) maken
WAAR (Transact-SQL)
Documenteigenschappen zoeken met lijsten met zoekeigenschappen