2010-04-20 9 views
1

mot-clé = maisonRechercher un mot-clé dans une chaîne longue dans mysql?

SELECT * FROM products WHERE description LIKE '%house%' 

Cette requête renvoie également des enregistrements ayant des mots clés, par exemple, palais de justice, mais je veux chercher maison seulement. Comment puis-je rechercher n'importe où dans la description pour "maison" seulement?

Merci.

MISE À JOUR

juste pour plus de précisions ..

actually house, can be at 
    - the start of the description .. "House for sale..", 
    - can be quoted -- "house", 'house' 
    - can have exclamation .. house!!!, house! 
    - others - house? etc .. 

c'est pourquoi je% maison%

+0

double possible de http: // stackoverflow.com/questions/656951/recherche-pour-mot-entier-match-dans-sql –

Répondre

0

SELECT * FROM produits WHERE Description RLIKE '[[: <:]] maison [[:>:]]'

RLIKE est synonim pour REGEXP. Indique le début du mot et la fin du mot
[[>>]]].

Il fonctionne pour tous vos besoins (insensible à la casse, avec mendient mots cités ou des mots qui se terminent, ou, avec des points d'exclamation et d'autres caractères non-lettre)

+0

pouvez-vous s'il vous plaît mettre quelques détails afin que je puisse modifier en conséquence, si nécessaire? – user187580

+0

est-il clair maintenant? – Unreason

1

Le % avant et après recherchera le texte correspondant avant et après la recherche mot-clé, essayez ceci plutôt pour la recherche exacte:

SELECT * FROM products WHERE description = 'house' 
+0

@astander: c'est ce qu'il dit: "Cette requête renvoie également des enregistrements ayant un mot-clé, par exemple, palais de justice, mais je veux chercher la maison seulement." – Sarfraz

+0

Je ne pense pas que c'est ce que l'OP veut. * Comment puis-je rechercher ** n'importe où dans la description ** pour "maison" seulement * –

+1

@astander: oui sa question n'est pas si claire. Voyons voir exactement ce qu'il cherche :) – Sarfraz

0

Essayez un espace autour du mot-clé:

SELECT * FROM products WHERE description LIKE '% house %' OR description LIKE 'house %' OR description LIKE '% house' OR description LIKE '% house%' 

Edit: ajouté plus d'options à la recherche. Le dernier permettrait house. ou house,, mais quelque chose comme housecat serait également correspondre. Regex fonctionnerait mieux ici. Cette solution est venue de Astandar, qui a supprimé sa réponse.

+0

Que faire si le mot-clé est à la fin d'une phrase? "J'ai une super maison!" –

+0

La solution d'astander est meilleure que la mienne, car elle permet au desc de commencer ou finir avec le mot-clé aussi. – hookedonwinter

+0

@Aaron ya, je viens de le réaliser. Astander a la bonne réponse. – hookedonwinter

2

Vous recherchez des chaînes longues contenant le mot entier?

Search for "whole word match" in MySQL

+1

Je pense que c'est la solution, j'ai posté un explicite avant de vérifier le vôtre – Unreason

+0

Je regarde le lien. J'ai aussi une question mise à jour. Thx – user187580

0

chose simple seul moyen maison, utilisez ce

SELECT * FROM products WHERE description = 'house' 

Si vous voulez un mot contenir maison arrière signifie utiliser,

SELECT * FROM products WHERE description LIKE '%house' 

Si vous voulez un mot contiennent maison moyen frontside utiliser ce,

SELECT * FROM products WHERE description LIKE 'house%' 

Si vous voulez un mot contient maison partout dans la description signifie utiliser,

SELECT * FROM products WHERE description LIKE '%house%' 
Questions connexes