Je dois utiliser une requête qui va tirer des données d'un champ quand il est inférieur à 4 mots, est-ce possible et si oui pourriez-vous donner quelques pointeurs? Je suppose que si ce n'est pas possible, il pourrait faire défiler les résultats jusqu'à ce qu'il trouve un qui était de 3 mots, puis terminer l'instruction while quand il a trouvé un.PHP MySql Où Field = <4 mots
Répondre
SELECT column FROM table where LENGTH(column) - LENGTH(REPLACE(column, ' ', ''))+1 < 4
Ici Regexp Solution.
select * from TABLE where column not regexp '^.+(.+){4}$'
Appel de fonctions dans une sélection sur un par enregistrement base est presque toujours une mauvaise idée en termes de performance - l'espace disque est généralement beaucoup plus « moins cher » que la capacité du processeur (je joins que dans les citations que je suis ne parle pas des coûts en dollars).
La plupart des bases de données ont tendance à être "plus lues qu'écrire" comme mon mentor de DBA m'a dit une fois; la solution idéale dans cette situation est d'avoir un déclencheur lors de l'insertion ou de la mise à jour de la ligne pour calculer le nombre de mots dans cette colonne et les stocker dans une autre colonne. La raison pour laquelle il est idéal est que le nombre de mots ne change que lorsque vous mettez à jour le champ, il est donc préférable d'effectuer le calcul à ce moment-là plutôt que (inutilement) chaque fois que vous lisez l'enregistrement.
L'espace requis ajouté sera minimal puisque vous ajoutez un entier (court) à un long (chaîne) mais vous trouverez vos requêtes criantes en utilisant simplement le champ entier (assurez-vous d'indexer dessus) .
J'allais suggérer un LIKE '% % % %'
mais je ne suis pas entièrement sûr si cela fonctionnerait ou non.
cela fonctionne pour> = 4 mots, pas pour <= 4 –
cela ne fonctionne pas si vous avez plus d'un espace entre deux mots – PierrOz
- 1. MySql Field Substrings
- 2. Outil 'Encapsulate Field' pour un IDE PHP
- 3. php et mysql. WHERE date <= X heures auparavant?
- 4. Simulation de l'ordre de MySQL par FIELD() dans Postgresql
- 5. error_reporting en PHP 4 et PHP 5
- 6. MySQL compte les mots correspondants
- 7. Comment utiliser des annotations XML telles que "XMLRoot" pour analyser le schéma comme <field key = "AA" id = "BB"> CC</field> en C#?
- 8. remplacement de tableaux PHP multi-mots
- 9. Où puis-je obtenir une application chat room PHP/MYSQL
- 10. Où stocker les fichiers téléchargés en PHP et MySQL?
- 11. jQuery $ ("# field") est null?
- 12. résultats de Split MYSQL en 4 tableaux
- 13. Comment utiliser SOAP/WSDL en PHP 4?
- 14. Echappement d'un <? Php et <? dans un script PHP
- 15. Base de données MySQL de mots anglais?
- 16. Objets django get/set field
- 17. Linq où entre IEnumerable et Liste <>
- 18. Comment dois-je auditer les changements dans une table MySQL (en utilisant MySQL 4)?
- 19. PHP MySQL Joining Tables
- 20. PHP - obtenir certains mots de la chaîne
- 21. Définition des noms d'utilisateur et mots de passe mysql
- 22. Comment stocker les mots de passe dans les bases de données et cookies (PHP/MySQL)
- 23. correspondant à des mots avec des accents, trémas, etc. mysql/php
- 24. créer des mots-clés dynamiquement à partir de mysql en utilisant php
- 25. MySQL - Où IN avec GROUP_CONCAT
- 26. Sécurité PHP et MySQL
- 27. PHP MySQL Lier alphabétiquement
- 28. MySQL, PHP - Formulaires Aide
- 29. Comment combiner ces mots dans un tableau avec "" en PHP?
- 30. besoin d'aide - conversion de bit-field
Cela devrait fonctionner. Cependant, vous devez écrire que vous vérifiez la longueur d'origine en fonction de la longueur avec tous les espaces remplacés. Ce n'est probablement pas évident pour la personne qui pose la question. – Kris
Je pense que cela échouera si le champ a des espaces de début ou de fin – DanSingerman
Cette solution est également multi-octets, celle avec regex ne l'est pas. – Eineki