mysql CONCAT () AS nom?

J'essaie de créer un petit moteur de recherche pour seulement une petite base de données. "CONCAT() AS nom" ne fonctionne pas alors comment puis-je utiliser quelque chose comme Concat() comme xxx?

Created an example here http://sqlfiddle.com/#!2/21b5c/5

Ce que j'essaie de faire c'est

SELECT 
    CONCAT(names,' ',office) AS bigDataField
    FROM item_table 
WHERE bigDataField LIKE "%jessy%";

Quelle est la meilleure façon d'utiliser le champ concat?

2

3 Réponses

Vous pouvez utiliser la clause HAVING plutôt que de dupliquer la fonction CONCAT() dans votre clause WHERE .

Par exemple:

SELECT CONCAT(`names`,' ',`office`) `bigDataField`
       FROM `item_table` 
HAVING `bigDataField` LIKE "%jessy%";
4
ajouté
@gieffe est-il préférable d'utiliser HAVING ou WHERE CONCAT ....?
ajouté l'auteur caramba, source
@BenM êtes-vous d'accord? et merci gieffe!
ajouté l'auteur caramba, source
le select est appelé par ajax on keyup + quelques ms. J'essaie de faire une recherche dynamique
ajouté l'auteur caramba, source
Je comprends que...
ajouté l'auteur BenM, source
Cela dépend de votre ensemble de données et du nombre de résultats que vous attendez. Je n'ai jamais été un grand fan d'appeler la même fonction deux fois. Vous n'exécuteriez pas de formule Haversine dans les clauses select ET where.
ajouté l'auteur BenM, source
Je recommanderais HAVING alors.
ajouté l'auteur BenM, source
Faites attention: HAVING sera exécuté après la requête. MySQL exécute d'abord la requête et ensuite applique la clause having au jeu de résultats.
ajouté l'auteur gieffe, source
À mon avis "où concat" est meilleur.
ajouté l'auteur gieffe, source

Vous ne pouvez pas utiliser d'alias dans les clauses where .

SELECT CONCAT(names,' ',office) AS bigDataField
FROM item_table 
WHERE CONCAT(names,' ',office) LIKE "%jessy%";
2
ajouté
merci les gars pour vos resposnes! est-il préférable d'utiliser Ayant comme écrit BenM? Si je regarde ici sqlfiddle.com/#!2/21b5c/10 une fois votre l'exemple est plus rapide et un autre exemple de benms
ajouté l'auteur caramba, source
Les clauses ayant sont pour les données groupées. Pour des raisons de lisibilité, je ne suis pas d'accord pour les utiliser.
ajouté l'auteur juergen d, source

Malheureusement, vous ne pouvez pas utiliser un alias pour une colonne calculée dans une clause WHERE - vous devrez utiliser CONCAT (noms, '', bureau) dans votre < code> WHERE clause.

This post has more detail: Can you use an alias in the WHERE clause in mysql?

1
ajouté