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 :

[Sybase] Remplacer des neant par rien


Sujet :

Langage SQL

  1. #1
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut [Sybase] Remplacer des neant par rien
    Bonjour,

    Alors voilà mon soucis, j'ai un ensemble de requetes qui récuperent des données contenues en base. Certaines de ces valeurs peuvent être egale à "neant" et j'aimerai changer toutes ces valeurs "neant" en "".
    Je pensais utiliser le CASE mais il faut que je l'attribue a chacun de mes champs dans mon SELECT, je trouve cela un peu lourd comme methode .

    Est ce qu'il existe une autre solution?
    Merci d'avance

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Salut,

    Quel est le SGBD concerné STP (cf CONSEILS... à lire AVANT de POSTER )

    Ton souci ne me paraî pas compliqué, il suffit d'appliquer la fonction de transtypage qui transforme un NULL en autre chose, comme une chaîne vide (en général COALESCE).

    Attention, sous Oracle en particulier, les chaînes vides sont assimilées à des valeurs NULL, ce qui est très discutable . Je ne sais pas si d'autres SGBD sont concernés ?

  3. #3
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut
    Oui en effet je m'excuse, j'ai oublié de précisé le SGBD sur lequel je travaillais, il s'agit donc de SYBASE.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut Ifnull
    Je ne sais pas si la fonction IFNULL est supportée par SYBASE, mais je pense que COALESCE qui est l'équivalent de IFNULL, doit l'être.
    La requête pourrait alors être de la forme:

    Select ... COALESCE(MaZone, ' '), ... From ...

    ou bien

    Select ... IFNULL(MaZone, ' '), ... From ...

  5. #5
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Quant tu parles de "neant" cela correspond à NULL ou à un champ contenant la valeur "neant".

    Dans le 1er cas :
    Select ... isnull(MaZone, ""), ... From ...

    Dans le 2eme cas :
    Select ... stuff(MaZone, patindex("%neant%", MaZone), 4, ""), ... From ...
    patindex retourne l'indice de la 1ère occurence de "%neant%" dans MaZone
    stuff remplace dans MaZone 4 caractères depuis l'indice par ""

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut Question à PerlGirl
    Perlgirl,

    Je voudrais apporter une précision à ma précédente réponse.

    Il faut bien tester la nullité de chaque champ concerné, en faisant au plus simple avec la fonction COALESCE() ou IFNULL().

    Update MaTable set MaZone1 = COALESCE(MaZone1, ""), MaZone2 = COALESCE(MaZone2, "") ...

    Ce qui se traduit par:

    Si MaZone1 est nulle, alors je mets "" dedans.
    Si MaZone2 est nulle, alors je mets "" dedans.
    etc.

    Les deux quotes ("") se traduiront probablement par des blancs dans les zones alphanumériques de la table.
    En revanche, je ne suis pas sûr que Sybase les accepte dans une zone numérique. Il vaut mieux sans doute y mettre zéro.

  7. #7
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Citation Envoyé par Mercure
    En revanche, je ne suis pas sûr que Sybase les accepte dans une zone numérique. Il vaut mieux sans doute y mettre zéro.
    Effectivement SYBASE n'accepte pas les "" pour une zone numérique.

    De même, il ne connait pas IFNULL. Il faut utiliser ISNULL ou COALESCE.

Discussions similaires

  1. Parser une page pour remplaçer des mots par d'autres
    Par HALOMOTO dans le forum Langage
    Réponses: 13
    Dernier message: 13/07/2006, 22h58
  2. [PHP][HTML] remplacer des RC par des <br>
    Par Arnard dans le forum Langage
    Réponses: 2
    Dernier message: 26/06/2006, 21h21
  3. [Conception] Remplacer des frames par du code PHP !!!!
    Par dragonfly dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 07/04/2006, 08h54
  4. Remplacer des boutons par des menus déroulants?
    Par drthodt dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 17h37
  5. Réponses: 5
    Dernier message: 30/05/2005, 16h58

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