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

Adaptive Server Enterprise Sybase Discussion :

pb de comparaison avec des null


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut pb de comparaison avec des null
    Bonjour,
    J'ai la table suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tab(@id int null, elem int not null)
    Je la remplie comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert into T values (null, 100)
    insert into T values (5, 200)
    En paramètre de ma procédure stockée, j'ai une variable @param int
    A l'intérieur de ma proc stock, je veux faire une jointure comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from Tab t
    where t.id >= isnull(@param, t.id)
    Cela marche bien quand @param = 1 par exemple, mais quand @param = null, il n'est plus capable de faire la comparaison correctement, et là je ne comprends plus... null >= null est bien VRAI pourtant??
    Je sais que je peux écrire mon select autrement pour que ça fonctionne mais je voudrais comprendre pourquoi ce que j'ai écrit ici ne fonctionne pas.
    Merci beaucoup si vous pouvez m'éclairer,
    Julien

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Est-ce que l'option ANSINULL est positionnée?

    (voir la commande "SET" dans le manuel de référence)

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut
    Bonne piste en effet!
    Malheureusement j'ai fait le test en mettant set ansinull off et ça ne marche toujours pas, c'est étrange. Par acquis de conscience je l'ai fait avec set ansinull on et ça ne marcha pas mieux... Peut-être faut-il changer cette option avec plus de droits que ceux que j'ai mais il ne me semble pas pourtant.
    Au passage, tu ne sais pas comment récupérer la valeur de ansinull? J'ai vu qu'il n'y a pas de @@ansinull.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Je crois qu'il y a un moyen de voir quelles sont les options actuellements en "marche", mais il me semble que c'est un bitmap, un peu complexe à traiter.
    (voir @@options)

    Pour les null - c'est toujours assez tricky.

    Idéallement il faudrait réecrire la requête, qqch comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM Tab t
    WHERE (t.id is null and @param is null)
    or (t.id >= @param)
    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  5. #5
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 134
    Points : 168
    Points
    168
    Par défaut
    Depuis la 12.5.4 ou la 15.0.2, il est possible d'utiliser sp_show_options.
    Exemple:

    # sp_show_options;
    number name
    ----------- ----------------------------
    7 arithabort
    8 numeric_truncation
    13 control
    40 prefetch
    41 triggers
    42 replication
    43 replication force_ddl
    48 transactional_rpc
    49 cis_rpc_handling
    58 remote_indexes
    62 statement_cache
    64 proc_return_status
    65 proc_output_params
    84 literal_autoparam
    Dans le cas plus précis de l'option ansinull:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select case when NULL=NULL then 'off' else 'on' end
    DBA sybase confirmé
    Cherche un poste sur Paris

Discussions similaires

  1. concatenation avec des Null
    Par looping dans le forum SQL
    Réponses: 3
    Dernier message: 27/10/2011, 21h44
  2. Inner Join avec des NULL
    Par BLJ.CHAUVIN dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/07/2011, 11h28
  3. Index unique pas unique avec des nulls ?
    Par marot_r dans le forum Modélisation
    Réponses: 6
    Dernier message: 17/03/2008, 19h53
  4. Comparaison avec des accents
    Par Zugg dans le forum Paradox
    Réponses: 8
    Dernier message: 26/09/2007, 10h33
  5. Problème de "select" avec des valeurs a null
    Par SchpatziBreizh dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/07/2005, 16h08

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