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 :

comment afficher les 2 premiers mots d'un champ?


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut comment afficher les 2 premiers mots d'un champ?
    Bonjour à tous,

    Savez-vous, s'il vous plait, s'il est possible en MySQL d' afficher juste les 2 premiers mots maximum d'un champ qui en compte entre 1 à n.

    Par exemple :
    ma_table contient les colonnes id et nom
    select nom from ma_table; affiche :

    nom
    ----------------------------------
    abracadabra bidule machin
    schtroumpf dormeur
    tintin
    le capitaine hadock
    -----------------------------------

    et je voudrais une colonne où j'aurais:

    x
    -------------------------
    abracadabra bidule
    schtroumpf dormeur
    tintin
    le capitaine
    -------------------------

    Est-ce ça peut se faire ça , en Mysql?

    merci d'avance pour le coup de main

  2. #2
    Membre habitué
    Femme Profil pro
    Database
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Database

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Points : 135
    Points
    135
    Par défaut
    Bonjour,

    après une recherche rapide sur le net, j'ai trouvé la fonction SUBSTRING_INDEX qui devrait répondre à votre problème.

    Bon courage!!!

  3. #3
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut
    Bonjour Lagnio,

    Merci beaucoup de me répondre!
    Malheureusement ça ne marche pas.
    J'ai epluché tous les substring chez MySQL mais je ne vois rien qui corresponde.
    parce que ma chaine , par exemple "le capitaine hadock" ou "les dupond" , n'a jamais la meme longueur donc je ne peux pas couper en fonction d'une position precise ni en fonction d'une substring puisque ce n'est pas la meme d'une rangee à une autre.

    Il faudrait qu'il puisse decouper la chaine en mots selon le séparateur "espace" et en faire une liste, et qu'ensuite on puisse recuperer les mots en fonction de la position qu'ils ont dans la liste.


    Il faudrait donc une fonction où l'on puisse preciser le separateur (espace) et le nombre de mots (2)...

    Mais j'ai l'impression que ça n'existe pas en MySQL. .. C'est bizare, parce c'est une fonction simple et assez usitée...

    En tout cas merci pour le coup de main...

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Il n'existe pas de fonction permettant de découper une chaîne selon un motif sous MySQL (en tout cas pas à ma connaissance), sauf peut-être FIND_IN_SET(), mais pour des chaînes très particulières séparées par virgules.
    Toutefois, pour se limiter à 2 mots séparés par un espace, la requête suivante devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT LEFT(nom, IF(LOCATE(' ', nom, LOCATE(' ', nom) + 1) = 0, LENGTH(nom), LOCATE(' ', nom, LOCATE(' ', nom) + 1) - 1))
    FROM ma_table;
    ced

  5. #5
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut
    Alors, j'ai eu plusieurs commentaires qui m'ont traverses l'esprit ...

    y a eu ...

    ça existe ça ?

    Wouaaaawww... ça c'est de la requete... !

    Balaize le garçon ...

    Trop malin! Je n'aurai jamais eu l'idee de calculer ça de cette façon...

    chapeau bas !!

    left, if, locate je ne connaissais pas...

    J'avais bien vu locate mais je n'aurais pas eu l'idee de l'utiliser ainsi...

    Bon ben, merci infiniment ... je vais bosser ça ...

  6. #6
    Membre régulier Avatar de Mydriaze
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 95
    Points
    95
    Par défaut
    ça marche très bien !!!

    Merci beaucoup !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/06/2012, 15h40
  2. Réponses: 3
    Dernier message: 25/05/2011, 11h49
  3. [MySQL] Afficher les N premiers mots
    Par onirisme dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/09/2007, 17h48
  4. Sélectionner les N premiers mots d'un champ texte
    Par keskispas dans le forum SQL
    Réponses: 19
    Dernier message: 22/01/2007, 14h22
  5. afficher les n premiers caractères d'un champs
    Par kabool dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/03/2006, 18h22

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