CONTAINS
( { column_name | ( column_list ) | * }
, '< contains_search_condition >'
[ , LANGUAGE language_term ]
)
< 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 ]
)
< AND > ::=
{ AND | & }
< AND NOT > ::=
{ AND NOT | & !}
< OR > ::=
{ OR | | }
Exemplos
A. Usando CONTAINS com <simple_term>O exemplo a seguir localiza todos os produtos com um preço de $80.99 que contêm a palavra "Mountain" . | Copiar código |
---|
USE AdventureWorks;
GO
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice = 80.99
AND CONTAINS(Name, 'Mountain');
GO
|
B. Usando CONTAINS e frase em <simple_term>
O exemplo a seguir retorna todos os produtos contendo a expressão "Mountain" ou "Road" .
|
Copiar código |
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, ' "Mountain" OR "Road" ')
GO
|
C. Usando CONTAINS com <prefix_term>
O exemplo a seguir retorna todos os nomes de produtos com pelo menos uma palavra que comece com a cadeia de prefixos na coluna Name .
|
Copiar código |
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, ' "Chain*" ');
GO
|
D. Usando CONTAINS e OR com <prefix_term>
O exemplo a seguir retorna todas as descrições de categoria contendo cadeias de caracteres com prefixos de "chain" ou "full" .
|
Copiar código |
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, '"chain*" OR "full*"');
GO
|
E. Usando CONTAINS com <proximity_term>
O exemplo a seguir retorna todos os nomes de produtos com a palavra bike próxima à palavra performance .
|
Copiar código |
USE AdventureWorks;
GO
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, 'bike NEAR performance');
GO
|
F. Usando CONTAINS com <generation_term>
O exemplo a seguir pesquisa todos os produtos com as palavras da forma ride : riding, ridden e assim por diante.
|
Copiar código |
USE AdventureWorks;
GO
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, ' FORMSOF (INFLECTIONAL, ride) ');
GO
|
G. Usando CONTAINS com <weighted_term>
O exemplo a seguir pesquisa todos os nomes de produtos contendo as palavras performance , comfortable ou smooth , e diferentes pesos são dados a cada uma.
|
Copiar código |
USE AdventureWorks;
GO
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, 'ISABOUT (performance weight (.8),
comfortable weight (.4), smooth weight (.2) )' );
GO
|
H. Usando CONTAINS com variáveis
O exemplo a seguir usa uma variável em vez de um termo de pesquisa específico.
|
Copiar código |
USE AdventureWorks;
GO
DECLARE @SearchWord nvarchar(30)
SET @SearchWord = N'Performance'
SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, @SearchWord);
GO
|
I. Usando CONTAINS com um operador lógico (AND)
O exemplo a seguir usa a tabela ProductDescription do banco de dados AdventureWorks. A consulta usa o predicado CONTAINS para pesquisar descrições nas quais a ID de descrição não é igual a 5 e a descrição contém as palavras "Aluminum" e "spindle". O critério de pesquisa usa o operador booleano AND.
|
Copiar código |
USE AdventureWorks;
GO
SELECT Description
FROM Production.ProductDescription
WHERE ProductDescriptionID <> 5 AND
CONTAINS(Description, ' Aluminum AND spindle');
GO
|
J. Usando CONTAINS para verificar uma inserção de linha
O exemplo a seguir usa CONTAINS dentro de uma subconsulta SELECT. Usando o banco de dados AdventureWorks, a consulta obtém o valor de todos os comentários na tabela ProductReview de um ciclo específico. O critério de pesquisa usa o operador booleano AND.
|
Copiar código |
USE AdventureWorks;
GO
INSERT INTO Production.ProductReview
(ProductID, ReviewerName, EmailAddress, Rating, Comments)
VALUES
(780, 'John Smith', 'john@fourthcoffee.com', 5,
'The Mountain-200 Silver from AdventureWorks 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,
' AdventureWorks AND
Redmond AND
"Mountain-200 Silver" '))
GO
|
|