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

MS SQL Server Discussion :

[SQL 2000] Comparaison avec NULL


Sujet :

MS SQL Server

  1. #1
    Yad
    Yad est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Points : 58
    Points
    58
    Par défaut [SQL 2000] Comparaison avec NULL
    Bonjour

    Pour alimenter une table qui est en réplication j'utilise une procedure stockée qui me fait les INSERT, UPDATE et DELETE ... obligatoire pour ne pas modifier tous les enregistrements ...

    Ceci se fait en comprant la table d'arrivée avec une vue ...

    Dans ma comparaison, il m'arrive (souvent) de me retrouver avec des enregistrements contenant NULL. Donc cela ne fonctionne pas ...

    Quelqu'un connaîtrai-t-il la solution ? C'est surement super simple ... mais bon ...

    Voici un exemple de code ... tout se passe sur l'update ... avec le (V.TAB_NOM <> T.LBTABT)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    ----------------------------------------------------------------------------------
    --                                  INSERT                               --
    ----------------------------------------------------------------------------------
    INSERT INTO tblGroupement (TAB_CDTAB, TAB_NOM, CreatedOn, CreatedBy)
    SELECT T.CDARGT, T.LBTABT,  Getdate() as CreatedOn, 'GER42' as CreatedBy
    FROM VW_TBL_GROUPEMENT T LEFT OUTER JOIN tblGroupement V ON (T.CDARGT = V.TAB_CDTAB)
    WHERE (V.TAB_CDTAB IS NULL)
     
    INSERT INTO TBL_LOG_JASMINE ([Table], [Action], [Nombre])
    VALUES ('TBLGROUPEMENT', 'INSERT', @@ROWCOUNT)
     
    ----------------------------------------------------------------------------------
    --                                 UPDATE                              --
    ----------------------------------------------------------------------------------
    UPDATE V
    SET	TAB_NOM= T.LBTABT, 
    	ModifiedOn = Getdate(),
    	ModifiedBy = 'GER42'
    FROM VW_TBL_GROUPEMENT T INNER JOIN tblGroupement V ON (T.CDARGT = V.TAB_CDTAB) AND
    	(V.TAB_NOM <>  T.LBTABT)
     
    INSERT INTO TBL_LOG_JASMINE ([Table], [Action], [Nombre])
    VALUES ('TBLGROUPEMENT', 'UPDATE', @@ROWCOUNT)
     
    ----------------------------------------------------------------------------------
    --                                 DELETE                              --
    ----------------------------------------------------------------------------------
    DELETE V
    FROM VW_TBL_GROUPEMENT T RIGHT OUTER JOIN  tblGroupement V ON  (T.CDARGT = V.TAB_CDTAB)
    WHERE (T.LBTABT IS NULL)
     
    INSERT INTO TBL_LOG_JASMINE ([Table], [Action], [Nombre])
    VALUES ('TBLGROUPEMENT', 'DELETE', @@ROWCOUNT)

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    essaie avec çà


    SET ANSI_NULLS ON -- au début
    SET ANSI_NULLS OFF -- a la fin

  3. #3
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    ou alors

    au lieu de faire les comparaisons type
    T.CDARGT = V.TAB_CDTAB

    fait

    ISNULL(T.CDARGT,0) = ISNULL(V.TAB_CDTAB,0) -- si int
    ISNULL(T.CDARGT,'') = ISNULL(V.TAB_CDTAB,'') -- si char

  4. #4
    Yad
    Yad est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Points : 58
    Points
    58
    Par défaut
    Merci pour ta réponse ... très sympa ...

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

Discussions similaires

  1. [SQL Server 2000] requête avec le nom de la table dynamique
    Par insane_80 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/12/2006, 17h57
  2. [SQL Server 2000]Probleme avec les dates !
    Par ChristopheOce dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2006, 15h58
  3. requete multibase avec sql 2000
    Par sobhilaire dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/10/2006, 09h53
  4. sql server 2000 installation avec amd 64
    Par rouchederoche dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/10/2006, 09h39
  5. sql server 2000 - atteindre champ Null
    Par poosh dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/07/2006, 17h10

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