Contains deyimi ile herhangi bir veri alanı içindeki veride istediğimiz, belirtmiş olduğumuz verinin geçip geçmediğini kontrol edebiliriz. Kullanımı şu şekildedir :
SELECT kolon1, kolon2 FROM tablo WHERE CONTAINS (indekslenmiş kolon, aranan ifade)
Örneklerle yazıma devam ediyorum. AdventureWorks veri tabanı üzerinde çalışıyorum.
SELECT FileName FROM Production.Document WHERE Contains(Document,'important');
Bu sorgu ile demek istediğim şu Production.Document tablosunda yer alan doküman içeriğinde important deyimi geçen dokümanların FileName alanını göster.
SELECT FileName, DocumentSummary FROM Production.Document WHERE Contains(Document,' "service guidelines " ') AND DocumentLevel = 2;
Bu seferde service guidelines geçen dokümanı aradık.
CONTAINS deyimini çoklu kullanımlar için yani AND, AND NOT, OR, NEAR gibi deyimlerle de kullanabiliriz.
SELECT FileName, DocumentSummary FROM Production.Document WHERE Contains(DocumentSummary, 'bicycle AND reflectors');
DocumentSummary’de bicycle ve reflectors aradık. Her ikisi de geçme şartı arandı.
SELECT FileName, DocumentSummary FROM Production.Document WHERE CONTAINS(DocumentSummary, 'bicycle AND NOT reflectors');
Bu sefer documentsummary içinde bicycle geçen ancak reflector geçmeyenleri listeledik.
SELECT FileName, DocumentSummary FROM Production.Document WHERE CONTAINS(DocumentSummary, 'maintain NEAR bicycle AND NOT reflectors');
Bu sefer maintain yakınlarında bicycle ama reflectors olmayan DocumentSummary aradık.
Tek bir CONTAINS ile birden fazla kolon üzerinde de arama yapabiliriz. İstenirse tabi birden fazla da kullanılabilir. Aynı zamanda ilgili tablonun tüm alanlarında arama yapmak istersek de asterisk yani * ile bu durumu da belirtebiliriz. Kullanım örnekleri : Bu 3 sorguda aynı sonucu geri döner.
SELECT FileName, DocumentSummary FROM Production.Document WHERE CONTAINS((DocumentSummary, Document),'maintain');
SELECT FileName, DocumentSummary FROM Production.Document WHERE CONTAINS((DocumentSummary),'maintain') OR CONTAINS((Document),'maintain')
SELECT FileName, DocumentSummary FROM Production.Document WHERE CONTAINS(*,'maintain');
Production.ProductReview tablosunda Comments kolonunda socks ifadesi geçen satırların ProductID ve Comments kolonlarını listeleyelim.
SELECT ProductID,Comments FROM Production.ProductReview WHERE CONTAINS(Comments,'socks');
Production.Document tablosundan herhangi bir kolonunda reflector ifadesi geçen tüm satırların Title ve FileName kolonlarını listeleyelim.
SELECT Title,FileName FROM Production.Document WHERE CONTAINS(*,'reflector');
Bir önceki sorgu ile benzer ancak bu sefer kolonlarda Seat ifadesi geçenler listelenmesin.
SELECT Title,FileName FROM Production.Document WHERE CONTAINS(*,'reflector AND NOT seat');