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 :

J’ai un souci avec les valeurs null sous sql server.


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Points : 126
    Points
    126
    Par défaut J’ai un souci avec les valeurs null sous sql server.
    Salut

    J’ai une table avec 3 champs id, strX, dtY
    je mets des 3 lignes(rows) :


    Pourquoi quand j’ai une valeur null dans une table elle n’est pas égale a l’autre table qui est pourtant la meme?
    exemple


    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    go 
    create table tmp( id int,strX varchar(10), dtY smalldatetime )
    Go
    insert tmp values(1,'test','1900-01-01')
    Go
    insert tmp values(2,'test',null)
    go
    insert tmp values(3,null,'1900-02-02')
    go 
    --J'ai toutes les données
    select * from tmp
    
    go
    --me manque les données avec les valeurs null
    select *
    from tmp as t1,
         tmp as t2
    where t1.id = t2.id	
    	and t1.strX = t2.strX
    	and t1.dtY  = t2.dtY
    
    
    --ou  avec join 
     ----me manque les données avec les valeurs null 
    select *
    from tmp as t1 join 
         tmp as t2 on 
    		 t1.id  = t2.id	
    		and t1.strX = t2.strX
    		and t1.dtY  = t2.dtY
    Gp
    
    
    --C'est une solution mais ce n'est pas très beau
    
    select *
    from tmp as t1,
         tmp as t2
    where  t1.id = t2.id	
    	and (case when t1.strX is null then 'qsdf123' else t1.strX end   ) = (case when t2.strX is null then 'qsdf123' else t2.strX end )
    	and (case when t1.dtY is null  then '1900-01-01' else t1.dtY end )=  (case when t2.dtY is null then '1900-01-01' else t2.dtY end )

    Merci bcp de votre aide car je n'aime pas ma solutions.

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Salut,

    NULL n'est pas une valeur, et on ne peut la comparer avec rien. Toute comparaison impliquant NULL retourne false.

    Tu as des fonctions utiles :
    - ISNULL()
    - COALESCE()

    Je te laisse regarder dans l'aide en ligne, ou dans les tutorials de developpez.com, par exemple les papiers d'sqlpro, il y a certainement qqch sur le sujet du NULL, c'est un sujet classique.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Citation Envoyé par rudib
    [...]il y a certainement qqch sur le sujet du NULL, c'est un sujet classique.
    Le traitement des NULLs
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

Discussions similaires

  1. SCD et les valeurs nulles sous Oracle
    Par jpvigniel dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 06/04/2011, 17h29
  2. Réponses: 3
    Dernier message: 23/09/2009, 10h45
  3. Réponses: 9
    Dernier message: 14/01/2009, 16h01
  4. récupérer les champs null sous sql Server
    Par le_temoin dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/04/2008, 10h57
  5. [ASE 12.0.3] Comment tester les valeurs nulles (T-SQL)
    Par msomso dans le forum Adaptive Server Enterprise
    Réponses: 7
    Dernier message: 02/01/2008, 09h07

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