Bonsoir,
En tout cas, j'en déduis que c'est un fonctionnement normal...pas évident au niveau logique. En fait c'est un peu comme pour le Chat de Schrödinger, une valeur null c'est indéterminé et on ne peut donc pas affirmer que c'est différent de vrai.
Merci pour toutes ces suggestions, je vais creuser.

Le 27/03/2024 à 23:14, yves dutrieux a écrit :
Re,

en relisant mon message, je suppose que tu avais corrigé, il faut lire :
as "Faux" au lieu de  as "Vrai" dans mon exemple de l'union  ;)

Yves

Le mer. 27 mars 2024 à 20:07, yves dutrieux <[email protected]> a écrit :

    Bonsoir,

    dans une requête sur une base de données, le champs nul c'est
    traître ! (je préfère toujours utiliser une valeur par défaut (ou
    alors utiliser un champs numérique avec 0/1/2 pour respectivement 
    false/true/nul par exemple).
    car la seule façon de le retrouver, c'est d'utiliser la condition
    "is nul" ou "is not nul"
    Donc si tu souhaites <> "True" + les nuls , tu dois utiliser la
    condition "champ" is null or "champ" = False et indiquer une
    valeur bidon dans ton champs si tu le sélectionnes dans le
    résultat de ta requête (car afficher un nul c'est pas évident ;) ).
    ex:
    select champs1, champs2, monchoixboleen as "fauxounul" where
    "champboleen" = False or "champboleen" is nul

    nb: dans la condition ci-dessus, je ne sais plus si on doit
    indiquer IS False ou = False (perso j'utilise en général, =0 pour
    False et =1 pour True).

    Si tu veux vraiment séparer les 2 possibilités, en SQL pur,
    j'aurais dit une d'utiliser une UNION (mais je sais pas si
    writer/base supporte) , ex :
    ex:
    select champs1, champs2, monchoixboleen as "Vrai" where
    "champboleen" = False
    union
    select champs1, champs2, monchoixboleen as "Nul" where
    "champboleen" is nul

    si pas de support union, alors peut-être qu'il supporte une
    fonction du style 'case "chamboleen" when' ? ou qq chose du genre.

    Yves


    Le mer. 27 mars 2024 à 19:34, Moebius <[email protected]> a écrit :

        Bonjour,
        J'ai un problème dans une requête sur des champs de type
        booléen dont je
        ne sais s'il s'agit d'un bug ou d'un comportement normal :
        quand je
        donne comme filtre 'champ <> TRUE', j'obtiens les
        enregistrements avec
        'champ' ayant false pour valeur mais pas ceux qui sont 'NULL'
        ; il me
        semble pourtant qu'un champ ayant la valeur NULL peut être
        considéré
        comme différent de TRUE, n'est-il point ?
        Qu'en pensez-vous ?
        cordialement,

-- Envoyez un mail à [email protected]
        <mailto:users%[email protected]> pour vous
        désinscrire
        Les archives de la liste sont disponibles à
        https://listarchives.libreoffice.org/fr/users/
        Privacy Policy: https://www.documentfoundation.org/privacy



-- web site : http://www.molenbaix.com



--
web site : http://www.molenbaix.com

--
Envoyez un mail à [email protected] pour vous désinscrire
Les archives de la liste sont disponibles à 
https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Répondre à