IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

rechercher les mots de plus de 7 caractères dans un champ text


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut rechercher les mots de plus de 7 caractères dans un champ text
    Bonjour à tous,

    je souhaite faire ressortir dans un select sur un champ text contenant le descriptif d'un produit, tous les mots qui font plus de 7 caractères contenus dans ce champ.
    J'ai beau avoir cherché dans les fonctions MySql de chaines de caractères un peu partout sur le net, je n'ai pas réussi à trouver une solution. je ne dit pas que j'ai tout vu, ce serait vantard. j'ai besoin d'effectuer cette recherche directement dans la base MySql donc out les codes php....

    Est-ce que quelqu'un voit ou connait une méthode pour ce faire ?

    merci de vos réponses...

    version mysql : 5.0.45

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Sauf à faire appel, en MySQL, à une fonction définie par l'utilisateur dans un langage externe, je ne vois pas non plus.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut arffff
    merci pour ta réponse rapide, a défaut de ne pouvoir le faire je reste dans l'attente d'une solution, les migrations ne sont jamais une partie de plaisir !

    bonne journée et avis aux amateurs !

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    En fait, je pensais à une procédure stockée (écrite en php ou autre), que tu pourrais invoquée dans la requête SQL.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut voui
    en effet j'avais bien compris, malheureusement mes compétences en procédures stockées sont dans l'immédiat limitée (plus sous Oracle) mais l'apprentissage est en cours mais le temps me manque.

    merci quand même pour ta réponse

    bonne soirée

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Pour obtenir tous les mots de plus de 7 caractères, tu peux découper la chaine en mots, sélectionnner les mots de plus de 7 caractères, puis concatainer les mots sélectionnés.

    Un mot d'une chaine peut être séparé avec la fonction SUBSTRING_INDEX.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( nom_du_champ, ' ', N ) , ' ' , -1 ) AS word
    Une fois un mot sélectionné, sa longueur est déterminable avec la fonction LENGTH.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT IF( LENGTH(SUBSTRING_INDEX( SUBSTRING_INDEX( nom_du_champ, ' ', N ) , ' ' , -1 ))>7,
    SUBSTRING_INDEX( SUBSTRING_INDEX( nom_du_champ, ' ', N ) , ' ' , -1 ),
    NULL) as word
    Cette requête retourne le Nième mot de la chaine ou NULL si le mot fait moins de 7 caractères.

    Tu peux ensuite sélectionner les mots de plus de 7 caractères en concatainant les résultats de la requête précédente, plusieurs fois utilisée, en remplaçant N par 1, 2, 3, ....

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par jeremya Voir le message
    Tu peux ensuite sélectionner les mots de plus de 7 caractères en concatainant les résultats de la requête précédente, plusieurs fois utilisée, en remplaçant N par 1, 2, 3, ....
    ... et voici comment adapter la solution de jeremya pour faire le tout en une seule requête :

    1. décider d'un nombre maximal de mots (par exemple 99)
    2. créer une table contenant les nombres de 1 au maximum décidé
    3. dans la requête de jeremya, ajouter un produit cartésien avec la table 1-max, qui fournit le N

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/04/2014, 17h46
  2. Réponses: 2
    Dernier message: 27/08/2008, 09h13
  3. [MySQL] Limiter le nombre de caractères dans un champ texte
    Par bibi28 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/01/2008, 08h31
  4. recherche du caractère * dans un champ texte
    Par marechal dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/07/2007, 16h37
  5. Réponses: 3
    Dernier message: 13/03/2007, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo