2012-06-23 3 views
0

Je veux créer une fonction de recherche sur mon site qui retournera des chaînes dans les chaînes. Par exemple: s'il y avait un enregistrement dans la base de données SQL où la valeur d'une colonne était "Mon nom est Harry Potter", alors l'utilisateur pourrait chercher "Harry P" ou "ott" ou "Mon nom", et le disque viendrait dans les résultats de la recherche.Recherche SQL pour la chaîne dans la chaîne

+1

Vous devriez au moins accepter la réponse lorsque vous êtes satisfait. –

Répondre

1

Utilisez la fonction LIKE.

SELECT * FROM myTable WHERE myName LIKE '%Harry P%' 

SELECT * FROM myTable WHERE myName LIKE '%ott%' 

SELECT * FROM myTable WHERE myName LIKE '%My Name%' 

Ici, je suppose avoir myName est le nom du champ que vous avez dans votre base de données & myTable est le nom de la table.

En PHP, votre requête doit être

SELECT * FROM myTable WHERE myName LIKE '%$yourWord%' 
2

utiliser dans votre SQL:

SELECT * FROM `table` WHERE title LIKE '%$search_word%' 
+0

Excellent! Je vous remercie. – Proffesor

+0

+1 en accordant une attention au tag attaché – Rab

1

Si la table est/sera petite, une déclaration avec LIKE '%word%' ira bien.

Bien que vous puissiez être tenté d'utiliser une table MyISAM pour pouvoir utiliser un index Fulltext, this is possible in InnoDB too. Il sera un peu plus difficile à implémenter de cette façon, mais il combinera la recherche de texte haute performance que MyISAM offre avec tous les avantages d'InnoDB (transactions, verrouillage de ligne, etc.).

1
select * from your_table 
where instr(some_column, 'string_to_search') > 0 
Questions connexes