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 :

Transformer une valeur zéro en donnée Null


Sujet :

Langage SQL

  1. #1
    Membre habitué

    Homme Profil pro
    Ingénieur géologue
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur géologue

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 158
    Points
    158
    Billets dans le blog
    4
    Par défaut Transformer une valeur zéro en donnée Null
    Bonjour,
    J'exporte des tables Excel vers SQL server. A l'arrivée et parfois, certaines cellules vides sur Excel se retrouvent en SQL avec des valeurs zéro (0). Comment demander à SQL de transformer ces valeurs zéro en données vide (Null).
    Merci

  2. #2
    Membre actif
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Points : 257
    Points
    257
    Par défaut
    Salut,

    un simple update suffira

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE ma_table
    SET nom_colonne = NULL
    WHERE nom_colonne = 0
    ... mais est-ce que dans tous les cas ce 0 est bien une valeur manquante ?

  3. #3
    Membre habitué

    Homme Profil pro
    Ingénieur géologue
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur géologue

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 158
    Points
    158
    Billets dans le blog
    4
    Par défaut Valeur zéro en null
    Merci pour votre réponse. Effectivement ça marche, mais comment faire quand j'ai plusieurs colonnes et que pour chaque colonne je dois avoir la condition "where". Les colonnes de ma table correspondent à des analyses chimiques. la valeur 0 signifie que ma teneur pour un élément est égale à zéro or valeur "null" pourrait signifier que cet élément n'a pas été analysé.

  4. #4
    Membre actif
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Points : 257
    Points
    257
    Par défaut
    Salut,

    Quelle est ta question ? Je n'ai pas compris...

    Tu veux tester des valeurs NULL ? Si oui tu peux utiliser IS NULL dans le WHERE.

    @+

  5. #5
    Membre habitué

    Homme Profil pro
    Ingénieur géologue
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur géologue

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 158
    Points
    158
    Billets dans le blog
    4
    Par défaut Valeur zéro en null
    Merci encore. Par exemple j'ai table "Table1" avec des colonnes C1,C2, C3..Je cherche avec l'update de convertir les valeurs zéro des colonnes en "Null". C'est à dire avoir quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Update table1
    set
    Table1.C1=Null
    Where table1.C1=0
    Table1.C2=Null
    Where Table1.C2=0
    etc...
    J'ai essayé ça mais apparemment c'ets faux.

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Votre syntaxe n'est effectivement pas bonne, mais je vous propose plutôt d'utiliser la fonction NULLIF.
    Le where n'est pas indispensable ici.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE table1
       SET C1 = NULLIF(C1, 0),
           C2 = NULLIF(C2, 0),
           C3 = NULLIF(C3, 0)

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Deux possibilités :
    Soit une requête de mise à jour par colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE  Table1
    SET     Table1.C1 = NULL
    WHERE   Table1.C1 = 0;
    UPDATE  Table1
    SET     Table1.C2 = NULL
    WHERE   Table1.C2 = 0;
    ...
    Soit une requête unique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE  Table1
    SET     Table1.C1 = (CASE Table1.C1 WHEN 0 THEN NULL ELSE Table1.C1 END)
        ,   Table1.C2 = (CASE Table1.C2 WHEN 0 THEN NULL ELSE Table1.C2 END)
    ...
    WHERE   Table1.C1 = 0
        OR  Table1.C2 = 0
    ...
    ;

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 152
    Points : 1 414
    Points
    1 414
    Par défaut
    par contre, la requete ne va pas corrige le probleme de logique

    Les colonnes de ma table correspondent à des analyses chimiques. la valeur 0 signifie que ma teneur pour un élément est égale à zéro or valeur "null" pourrait signifier que cet élément n'a pas été analysé.
    Apres cela toutes les analyses realisees sur des elements dont le dosage est effectivement egale a zero seront considerees comme n'ayant jamais eu lieu

    et c'est bien dommage pour les analyses de stat derriere ... mais cela est une autre histoire

  9. #9
    Membre habitué

    Homme Profil pro
    Ingénieur géologue
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur géologue

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 158
    Points
    158
    Billets dans le blog
    4
    Par défaut Valeur zéro en null
    Merci pour votre aide. J'ai vraiment un large choix et c'est très intéressant à la fin. Merci également à Dehorter olivier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Apres cela toutes les analyses realisees sur des elements dont le dosage est effectivement egale a zero seront considerees comme n'ayant jamais eu lieu
    Pour les analyses dont le dosage qui risque d'être nul nous n'affichons pas le zéro mais la valeur extrême de la sensibilité de la méthode d'analyse qui je l'admet, peut fausser aussi les analyses statistiques.

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

Discussions similaires

  1. Comment transformer une valeur numérique en chaine dans une requête ?
    Par jmlabatut dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/11/2009, 05h44
  2. [XSLT]Transformer une valeur d'attribut en élément
    Par heffer69 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 01/02/2008, 11h48
  3. transformer une valeur 0 ou 1 en checkbox ?
    Par kikidrome dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/09/2007, 14h51
  4. Comment affecter une valeur par defaut si null?
    Par cassy dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/07/2006, 19h13
  5. Réponses: 8
    Dernier message: 11/08/2005, 09h32

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