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 et SQL. Discussion :

Retirer caractère dans une chaine


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19
    Points : 16
    Points
    16
    Par défaut Retirer caractère dans une chaine
    Bonjour,

    Je cherche dans une requête SELECT à retirer afficher un champ sans les zéros au début des valeurs :
    NR
    0000980190 -> 980190
    0031364649 -> 31364649
    Le soucis ici est que le nombre de zéro n'est pas fixe donc je ne peux supprimer systématiquement un certain nombre de caractère du début.
    J'ai essayé 2 choses en vain :
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT trim(leading '0' FROM  table1.nr) as nr FROM table1
    -> semble ne pas fonctionner sous Access : erreur de syntaxe (opérateur absent)
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Replace(NR,'0',"") AS Expr1  FROM table;
    -> enlève tous les '0' de la chaine... 0000980190 -> 9819...

    Merci de votre aide !

    Cordialement,

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    salut,
    c'est parce que tu n'as pas remarqué l'utilisation d'apostrophe dans ton premier argument, et de guillemets dans le second.

    essaie avec
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Replace(NR,'0','') AS Expr1  FROM table;

    en l'occurence, pour supprimer les 0 devant tu peux passer par
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Cstr(Cdbl(NR)) AS Expr1  FROM table;

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour à tous
    en l'occurence, pour supprimer les 0 devant tu peux passer par

    Code SQL :
    SELECT Cstr(Cdbl(NR)) AS Expr1 FROM TABLE;
    Un idée originale de convertir le champ en numérique avant de le reconvertir en texte !
    Il faut toutefois être sur que le champ ne contiendra jamais de texte.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    s'il s'agit d'une chaine de caracteres, on peut créer une petite fonction simple du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function VireZero(strinput as string) as string
    dim result as string
    result = strinput
    do until(left(result,1)<>'0')
    result = right(result,len(result)-1)
    Loop
    VireZero = result
    End Function
    ce qui donnera
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT VireZero(NR) as NR FROM Table1

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    ok Merci à tous !
    convertir en double puis en texte me suffit ici.

    Cordialement,

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re

    Bravo jpcheck, un petit code simple et pratique

    J'aurais toutefois remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result = right(result,len(result)-1)
    par

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/11/2005, 13h44
  2. [VS.net] Vérifier le présence d'un caractère dans une chaine
    Par arnolem dans le forum Windows Forms
    Réponses: 15
    Dernier message: 10/09/2005, 15h19
  3. Recuper un caractère dans une chaine. (novice)
    Par Thierry8 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/08/2005, 09h07
  4. Réponses: 8
    Dernier message: 08/06/2004, 01h29

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