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

Langage SQL Discussion :

Suppression de blanc dans un champ!


Sujet :

Langage SQL

  1. #1
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut Suppression de blanc dans un champ!
    Bonjour,
    Je suis en train de transformer une base access en mysql.
    J'ai donc généré et bidouillé un fichier xls pour le transformer en requete SQL et créer ma table.
    Ca a marché. Mais le probleme c'est que les données sont centrées dans les champs.
    J'aimerais par une requete SQL recadrer tout ca à gauche, donc supprimer les blanc.
    Je ne sais pas comment faire.
    Merci de m'aider!

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 878
    Points : 53 055
    Points
    53 055
    Billets dans le blog
    6
    Par défaut
    Utilisez la fonction TRIM.

    A +

  3. #3
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Bonsoir SQLpro,
    J'ai fais la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `matable` WHERE `monchamp` = trim(`monchamp`)
    Ca n'as rien changé, et la requête c'est bien passée.

  4. #4
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour, le trim est à placer dans le SELECT et non dans la cause where (quoiqu'il est peut-être également nécessaire dans la clause where)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT unChamp, TRIM(monChampATrimer), unAutreChamp
    FROM maTable
    WHERE TRIM(monChamATrimer) LIKE 'maValeurTestee'

  5. #5
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Tu n'as pas compris ce que te propose SQLpro.
    Il faut utiliser la fonction Trim dans le select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select Trim(Champ1), Trim(Champ2), .....
    from MaTable
    where .....

  6. #6
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Bonjour et merci à vous deux!
    OK j'ai compris ce que vous me dites, mais qu'est-ce que je met dans le Where.
    Ce sont tous mes enregistrement (+3000) qui sont concernés.
    Je ne vais pas faire autant de requete?
    Il doit bien y avoir une solution globale?
    A+

  7. #7
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Pour l'instant, vous en êtes où exactement ?
    Vous avez un script qui crée la table, et fait les INSERT de chaque tuples mais avec des espaces à gauche, c'est bien ça ?

    Il faut placer le TRIM au bon endroit. Peut-être pouvez-vous nous donner une partie du script, l'INSERT d'un ou deux tuples afin qu'on voit les actions du script.

  8. #8
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Oui j'ai créé un script a partir dune feuille excel ou j'avais mes infos pour chaque enregistement, et en inserant des colones j'ai rentré dans celle-ci

    et les différentes syntaxes, et ca donne ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO `comphotclas` (`clasphot`, `numel`,  `posphot`) VALUES ('	00-01 CE1 CE2 M	 '	,'	1337	 '	,'	1	'	)
    INSERT INTO `comphotclas` (`clasphot`, `numel`,  `posphot`) VALUES ('	00-01 CE1 CE2 M	 '	,'	1891	 '	,'	2	'	)
    INSERT INTO `comphotclas` (`clasphot`, `numel`,  `posphot`) VALUES ('	00-01 CE1 CE2 M	 '	,'	1892	 '	,'	3	'	)
    INSERT INTO `comphotclas` (`clasphot`, `numel`,  `posphot`) VALUES ('	00-01 CE1 CE2 M	 '	,'	1893	 '	,'	4	'	)
    INSERT INTO `comphotclas` (`clasphot`, `numel`,  `posphot`) VALUES ('	00-01 CE1 CE2 M	 '	,'	1894	 '	,'	5	'	)
    La longueur des valeurs dans les champs n'étant pas fixe il n'est pas possible de déterminer une largeur de colonne. D'ailleurs je ne sais pas si ça marcherais.
    Donc des espaces subsistent a gauche et aussi a droite.
    J'aimerais donc recadrer tous ca pour que dans le cas d'une requete SQL dans un PHP je puisse extraire les enregistrement concernés par une valeur donnée!
    A+

  9. #9
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Un replace all via votre éditeur de texte de ' _______' (où "_" est à remplacer par le nombre d'espaces) par '' ?

  10. #10
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    C'est la construction de la chaîne INSERT qui te pose problème ?
    Et que ce passe-t-il si tu construits la chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO `comphotclas` (`clasphot`, `numel`,  `posphot`) VALUES (TRIM('	00-01 CE1 CE2 M	 ')	,TRIM('	1894	 ')	,TRIM('	5	')	)
    ?

    EDIT : Chtulus, j'ai failli oublier les balises de code, mais je me suis repris tout de suite après

  11. #11
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Pour Vermine.
    Je ne vois pas comment le faire avec un editeur de texte!
    Pour Pacman.
    Je l'avais fais mais ca changeait rien.
    Je crois que je vais me palucher les +3000 enregistrements.

  12. #12
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Tout dépend de l'éditeur de texte mais certains proposent la fonction "replace all". C'est souvent (tjs ?) au même endroit que le "search" et "replace" (parfois dans le "replace" lui même).


    PS: fait une copie du fichier avant de faire un replace all, on sait jamais

  13. #13
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    La fonction j'avais trouvé, mais quoi enlever et remplacer par quoi?
    Je ne peux pas rechercher les blancs, je peux en avoir dans les champs.

  14. #14
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Un replace all fonctionnerait si toutes les lignes comportaient le même nombre d'espaces à gauche de l'élement, et le même nombre d'espaces à droite de l'élément.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    '	'
     
    diffère de
     
    ' '
     
    Donc replace all '	' par '' (sans les '' mais c est pour montrer qu il y a des espaces).
    Mais bon, je suppose que ce n'est pas le cas.

Discussions similaires

  1. Suppression des blancs dans une ComboBox
    Par sami35 dans le forum Général VBA
    Réponses: 6
    Dernier message: 10/05/2007, 17h07
  2. [Oracle] Problème d'affichage de valeurs contenant un caractère blanc dans un champ
    Par domray dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/02/2007, 17h11
  3. Réponses: 4
    Dernier message: 10/10/2006, 10h14
  4. Réponses: 3
    Dernier message: 12/09/2006, 12h53
  5. Réponses: 3
    Dernier message: 31/01/2005, 23h18

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