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

 MySQL Discussion :

Changer la casse pour toutes les données d'un champ


Sujet :

MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Changer la casse pour toutes les données d'un champ
    Bonjour,

    Je souhaite modifier la casse de 2 champs d'une table pour tous les enregistrements une table qui s'appelle USER

    Le champ use_nom, tout en majuscule,
    Le champ use_prénom, uniquement la 1er lettre du prénom en majuscule.

    Pourriez vous m'aider ?

    Est ce possible directement dans phpmyadmin ou faut-il faire un script php ?

    Merci

  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,
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE `USER`
    SET use_nom=UPPER(use_nom),
    use_prénom=CONCAT (UPPER(LEFT(use_prénom,1)), LOWER(use_prénom,LENGTH(use_prénom)-1))
    devrait faire l'affaire, mais je te conseille de faire une sauvegarde de la table avant d'essayer.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Points : 52
    Points
    52
    Par défaut Voici ce que j'ai fais après quelques recherches
    J'ai utilisé 2 requêtes.

    La première pour mettre tout les caractères en majuscule d'un champ pour tous les enregistrements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE mytable SET name = UPPER(name);
    La première lettre en majuscule est les suivantes en minuscules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `table` SET `field` = CONCAT(UPPER(LEFT(`field`, 1)), LOWER(SUBSTRING(`field`, 2)))
    Voilà, testé dans 2 bases, dev et prod et parfaitement fonctionnel

    Merci de votre aide

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Alors, j'ai exactement besoin de ca ! Mais je m'y connais pas trop et je suis du genre à faire des erreurs super c*nnes qui font perdre 3h... Donc avant, je voulais savoir, il faut mettre des quote a l'interieur des parenthèses, autour du nom du champ?

    Merci à celui/celle/ceux qui répondront

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Les apostrophes inversées (back-quote) ne sont utiles que si :
    - l'objet est mal nommé avec un mot réservé du langage SQL ;
    - l'objet est mal nommé parce qu'il comporte un caractère interdit du genre espace.

    En gros, si la BDD est bien conçue, on n'a jamais besoin d'en mettre.

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    D'accord.
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Contact SET Prenom = CONCAT(UPPER(LEFT(Prenom, 1)), LOWER(SUBSTRING(Prenom, 2)))
    serait correct?

    Merci beaucoup.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Oui.

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    J'ai essayé, mais ca me mets le message d'erreur suivant:
    Msg*174, Niveau*15, État*1, Ligne*1
    La fonction substring requiert 3 arguments.
    J'ai un peu regardé et j'ai vu qu'on pouvait en mettre 2 ou 3, le troisième pour la fin de la "sous-chaine". Vu que SQL Server a l'air de vouloir les 3, c'est possible de mettre un grand nombre pour le dernier argument, pour être sur que ca prenne tout, ou faut absolument que le nombre de lettre soit présent?

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Alkana Voir le message
    J'ai essayé, mais ca me mets le message d'erreur suivant:
    Msg*174, Niveau*15, État*1, Ligne*1
    La fonction substring requiert 3 arguments.


    J'ai un peu regardé et j'ai vu qu'on pouvait en mettre 2 ou 3, le troisième pour la fin de la "sous-chaine". Vu que SQL Server a l'air de vouloir les 3, c'est possible de mettre un grand nombre pour le dernier argument, pour être sur que ca prenne tout, ou faut absolument que le nombre de lettre soit présent?
    Euh... tu as créé la discussion dans le forum MySQL. Tu utilises MySQL ou Microsoft SQL Server ?

    Sinon inspire toi de la requête de Maljuna Kris. J'ai été étonné quand j'ai vu le SUBSTRING avec seulement deux arguments mais effectivement, chez MySQL, c'est permis.

    La syntaxe SQL normalisée, qui devrait donc être acceptée par tout SGBDR digne de ce nom est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUBSTRING (la_colonne FROM caractère_en_position_p FOR nbr_caracteres_à_extraire_à_partir_de_la_position_p)

  10. #10
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Je suis tombée sur la discussion en recherchant par google, je n'ai pas vu que c'était pour MySQL exclusivement, désolée. Mais je vais peut-être éviter de recréer un sujet maintenant.

    Vu que les enregistrements n'ont pas tous la même longueur, je peux quand même mettre un nombre nbr_caracteres_à_extraire_à_partir_de_la_position_p (assez grand pour être sure que tous les enregistrements soient modifiés en entier) ou ceux qui sont plus courts vont poser problème?
    J'ai pas réussis à trouver cette info dans mes recherches...

  11. #11
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Contact SET Prenom = (UPPER(LEFT(Prenom, 1))) + (LOWER(SUBSTRING(Prenom, 2, 50)))
    Cette requête marche. Désolée pour les questions au mauvais endroit et merci d'avoir pris le temps de répondre. Bonne fin de journée.

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Tu pouvais aussi faire comme dans la requête de Maljuna Kris, et en syntaxe normalisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE Contact
    SET Prenom = UPPER(LEFT(Prenom, 1))  || LOWER(SUBSTRING(Prenom FROM 2 FOR LENGTH(Prenom) - 1))

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/11/2014, 17h46
  2. [ZF2.X] Changer de layout pour toutes les pages
    Par narmataru dans le forum Zend Framework
    Réponses: 3
    Dernier message: 16/05/2013, 02h25
  3. [PR-2003] Changer de calendrier pour toutes les tâches
    Par oreoolep dans le forum VBA Project
    Réponses: 1
    Dernier message: 28/12/2011, 19h42
  4. Réponses: 9
    Dernier message: 24/10/2007, 14h36
  5. [MySQL] Afficher toutes les données d'un champ dans une liste déroulante
    Par Touareg dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 19/03/2007, 12h42

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