Y a-t-il un type de données booléen dans Microsoft SQL Server comme dans MySQL?
y a-t-il un type de données booléen dans Microsoft SQL Server comme il y en a dans MySQL?
si oui, quelle est l'alternative dans MS SQL Server?
8 réponses
vous pouvez utiliser le type de données BIT
pour représenter les données booléennes. La valeur d'un champ BIT
est 1,0 ou nulle.
vous pouvez utiliser le BIT
type de données, probablement paramètre est comme NOT NULL
:
citant le article MSDN :
bit (Transact-SQL)
un type de données entier qui peut prendre une valeur de 1, 0, ou NULL.
le moteur de base de données SQL Server optimise le stockage des colonnes de bits. Si il y a 8 colonnes ou moins de bits dans une table, les colonnes sont stockées comme 1 octet. S'il y a de 9 jusqu'à 16 colonnes de bits, les colonnes sont stockées comme 2 bytes, et ainsi de suite.
les valeurs de chaîne TRUE Et FALSE peuvent être converties en valeurs bit: TRUE est converti en 1 et FALSE est converti en 0.
vous recherchez un bit
. Il stocke 1 ou 0 (ou NULL
).
alternativement, vous pouvez utiliser les cordes 'true'
et 'false'
à la place de 1 ou 0, comme so -
declare @b1 bit = 'false'
print @b1 --prints 0
declare @b2 bit = 'true'
print @b2 --prints 1
en outre, toute valeur non 0 (positive ou négative) est évaluée à (ou convertie en dans certains cas) a 1.
declare @i int = -42
print cast(@i as bit) --will print 1, because @i is not 0
notez que SQL Server utilise trois valeurs logiques ( true
, false
, et NULL
), puisque NULL
est une valeur possible du type de données bit
. Voici les tables de vérité pertinentes -
plus d'information sur les trois logiques valorisées -
exemple de trois logiques valorisées dans le serveur SQL
http://www.firstsql.com/idefend3.htm
https://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued-logic /
il y a un type de données booléen dans SQL Server. Ses valeurs peuvent être TRUE
, FALSE
ou UNKNOWN
. Toutefois, le type de données booléen n'est que le résultat d'une expression booléenne contenant une combinaison quelconque de opérateurs de comparaison (par exemple =
, <>
, <
, >=
) ou opérateurs logiques (p.ex. AND
, OR
, IN
, EXISTS
). Les expressions booléennes sont seulement permises in a handful of places including the WHERE
clause, HAVING
article, la clause WHEN
d'une clause CASE
expression ou le prédicat d'une clause IF
ou WHILE
.
pour tous les autres usages, y compris le type de données d'une colonne dans un tableau, booléen n'est pas autorisé. Pour ceux autres usages, le type de données BIT
est préféré. Il se comporte comme un INTEGER
réduit qui ne permet que les valeurs 0
, 1
et NULL
, à moins qu'il ne soit restreint davantage par une contrainte de colonne NOT NULL
ou une contrainte CHECK
.
pour utiliser une colonne BIT
dans une expression booléenne, elle doit être comparée en utilisant un opérateur de comparaison tel que =
, <>
ou IS NULL
. par exemple
SELECT
a.answer_body
FROM answers AS a
WHERE a.is_accepted = 0;
du point de vue du formatage, une valeur bit
est habituellement affichée sous la forme 0
ou 1
dans le logiciel client. Lorsqu'un format plus convivial est requis, et qu'il ne peut pas être traité à un niveau d'application devant la base de données, il peut être converti "juste à temps" en utilisant une expression CASE
par exemple
SELECT
a.answer_body,
CASE a.is_accepted WHEN 1 THEN 'TRUE' ELSE 'FALSE' END AS is_accepted
FROM answers AS a;
stocker des valeurs booléennes comme un type de données de caractère comme char(1)
ou varchar(5)
est également possible, mais qui est beaucoup moins clair, a plus de stockage/la surcharge du réseau, et exige CHECK
contraintes sur chaque colonne de restreindre des valeurs illégales.
pour référence, le schéma du tableau answers
serait similaire à:
CREATE TABLE answers (
...,
answer_body nvarchar(MAX) NOT NULL,
is_accepted bit NOT NULL DEFAULT (0)
);
utilisez le type de données Bit
. Il a les valeurs 1 et 0 quand il traite avec lui dans natif T-SQL
vous pouvez utiliser Bit
DataType dans SQL Server pour stocker des données booléennes.
j'utilise TINYINT(1)
type de données afin de stocker des valeurs booléennes dans le serveur SQL bien que BIT
soit très efficace