Bonsoir,

Envoyé par
elsuket
Le type bit répond à cela
Hum...
Je cite la référence SQL Server à propos du type BIT :
« An integer data type that can take a value of 1, 0, or NULL. »
Pour sa part, Oishiiii a fait mention d’un vrai type booléen (BOOLEAN). Que je sache, d’après la citation ci-dessus, le type BIT n’est jamais qu’une spécialisation du type INT, avec lequel on passe de la logique des prédicats à un simulacre, à un ersatz, à de l’épicerie.
NULL (que par ailleurs l’auteur de la référence considère comme une valeur, alors que ça n’est qu’une marque !) ne fait pas partie des valeurs possibles pour le type booléen, qui sont limitées à TRUE, FALSE, point barre. La norme autorise pour sa part TRUE, FALSE, UNKNOWN, mais je n’entrerai pas dans la polémique, je l’ai fait assez souvent chez DVP.
Par ailleurs, il y a du mou dans la corde à nœuds avec ce type BIT, car si je code :
1 2 3 4 5 6 7 8 9 10 11 12
|
CREATE TABLE A
(
COLA BIT
, COLB CHAR(1)
) ;
INSERT INTO A VALUES (0, 'A') ;
INSERT INTO A VALUES (3.14, 'B') ;
SELECT * FROM A
WHERE COLA = 'TRUE' ; |
Le résultat fourni est le suivant :
1 2 3 4
|
COLA COLB
---- ----
1 B |
Or je ne sache pas que 3.14 = 1.
Quand l’auteur de la référence écrit :
« The string values TRUE and FALSE can be converted to bit values: TRUE is converted to 1 and FALSE is converted to 0. »
Il a tout faux, car il y a conversion non pas de TRUE et FALSE mais de 'TRUE' et 'FALSE', qui ne sont pas des valeurs de type booléen, mais de type chaîne de caractères. On nage dans l’approximation (l'arnaque ?) la plus totale.
Encore un mot à propos de la norme SQL :
« The data type boolean comprises the distinct truth values True and False. Unless prohibited by a NOT NULL constraint, the boolean data type also supports the truth value Unknown as the null value. This specification does not make a distinction between the null value of the boolean data type and the truth value Unknown that is the result of an SQL <predicate>, <search condition>, or <boolean value expression>; they may be used interchangeably to mean exactly the same thing. »
Vous avez bien lu ? Selon la norme, il revient au même de dire : « Je ne sais pas » et « Je sais que l’information est absente » ! Etc.
Partager