2012-01-10 10 views
8

ile başlıyor SQL'de arama Şu anda SQL ve PHP ile arama motoru yapmak istiyorum. Ben crrently aşağıdaki sorguyu kullanın:Dize, X

SELECT * FROM info WHERE name LIKE '%$q%' LIMIT 10 

Ama $ q, değil $ q cointain olanlar ile başlar 'dizisinin' bilgi seçmek istiyor.

+0

"Arama motoru yapmak istiyorum", bu ne anlama geliyor? Bir sorguyu yürütmek istediğiniz anlamına mı geliyor? –

cevap

20

Basitçe ilk joker (%) kaldırmak: Birden adlara sahip alanları aramak isteyen varsa

SELECT * FROM info WHERE name LIKE 'X%' LIMIT 10 
0

ve daha sonra, tarlanın ortasında olabilecek bir ad aramak istiyorum Full Text Search (FTS) kullanmak daha iyi olabilir. Örneğin, OP'deki name alanı tam adı belirtir ve "John Doe" içerebilir ve "Doe" için arama yapmak istiyorsanız, FTS muhtemelen bir LIKE işleci kullanmaktan daha iyi (daha doğru ve daha hızlı) olacaktır. FTS ile, metindeki tek tek kelimeler indekslenir ve böylece aramalar çok hızlı olabilir, artı bitişik olmayan bir alanda iki kelimeyi (veya isimleri) bulma özelliği gibi daha karmaşık aramalara olanak tanır (bir örnek seçmek için) rasgele).

Belirli veritabanı satıcısı OP'de belirtilmemiş, ancak FTS destekleniyorsa, denediğiniz şey için iyi bir seçim olabilir. Bazı FTS information for SQL Server ve for MySQL bir arama ile kolayca bulunur.