"RuiSMonteiro" <[EMAIL PROTECTED]> wrote on 22/09/2004 09:35:00:
> Hello there,
> I was wondering how I could make a specific type of search when the
> string has more than one word.
> Ex.---------------------------------------------
> String = "Green Apple"
> Select * from fruits
> where
> (fruits.color like '%Green Apple%'
> or fruits.type like '%Green Apple%')
> ------------------------------------------------
> What I thought was breaking the string in 2 words and compares each
> word with the fields. The problem is that I can't control how many
> fields should be compared.
> Also don't know how to compare each word. The following syntax doesn't
work:
> -----------------------------------------------
> Select * from fruits
> where
> (fruits.color like in ('%Green%', '%Apple%')
> or fruits.type like in ('%Green%', '%Apple%')
> -----------------------------------------------
> Any ideas would be very thankful.
I suspect that what you want is a Fulltext index. This splits the text up
into words and does a separate search for the separate words. This is much
more efficient than the LIKE search for the case when you need leading %
characters, because this forces a full linear search. The fulltext search
would look something like
MATCH fruits.color AGAINST ("Green", "Apple")
Unfortunately, Fulltext searches are available only on MyISAM tables.
See http://dev.mysql.com/doc/mysql/en/Fulltext_Search.html
Alec
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]