Is er een Booleaans gegevenstype in Microsoft SQL Server zoals in MySQL?
Zo niet, wat is dan het alternatief in MS SQL Server?
Antwoord 1, autoriteit 100%
U kunt het gegevenstype BIT
gebruiken om booleaanse gegevens weer te geven. De waarde van een BIT
-veld is 1, 0 of null.
Antwoord 2, autoriteit 17%
Misschien wilt u de BIT
gegevenstype, waarschijnlijk is de instelling als NOT NULL
:
Citeer het MSDN-artikel:
bit (Transact-SQL)
Een gegevenstype met een geheel getal dat een waarde van 1, 0 of NULL kan aannemen.
De SQL Server Database Engine optimaliseert de opslag van bitkolommen. Als er 8 of minder bitkolommen in een tabel zijn, worden de kolommen opgeslagen als 1 byte. Als er 9 tot 16 bit kolommen zijn, worden de kolommen opgeslagen als 2 bytes, enzovoort.
De tekenreekswaarden TRUE en FALSE kunnen worden geconverteerd naar bitwaarden: TRUE wordt geconverteerd naar 1 en FALSE wordt geconverteerd naar 0.
Antwoord 3, autoriteit 11%
Je zoekt een BIT
. Het slaat 1 of 0 op (of NULL
).
U kunt ook de tekenreeksen 'true'
en 'false'
gebruiken in plaats van 1 of 0, zoals zo-
declare @b1 bit = 'false'
print @b1 --prints 0
declare @b2 bit = 'true'
print @b2 --prints 1
Ook wordt elke waarde die niet 0 is (positief of negatief) geëvalueerd naar (of in sommige gevallen omgezet in) een 1.
declare @i int = -42
print cast(@i as bit) --will print 1, because @i is not 0
Merk op dat SQL Server drie gewaardeerde logica gebruikt (TRUE
, FALSE
en NULL
), aangezien NULL
is een mogelijke waarde van het gegevenstype BIT
. Hier zijn de relevante waarheidstabellen –
Meer informatie over drie gewaardeerde logica-
Voorbeeld van drie gewaardeerde logica in SQL Server
http://www.firstsql.com/idefend3.htm
https://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued-logic/
Antwoord 4, autoriteit 8%
Er is een booleaans gegevenstype in SQL Server. De waarden kunnen TRUE
, FALSE
of UNKNOWN
zijn. Het booleaanse gegevenstype is echter alleen het resultaat van een booleaanse expressie die een combinatie van vergelijkingsoperatorenbevat. (bijv. =
, <>
, <
, >=
) of logische operatoren(bijv. AND
, OR
, IN
, EXISTS
). Booleaanse uitdrukkingen zijn slechts op een handvol plaatsen toegestaan, waaronder de WHERE
clausule, HAVING
clausule, de WHEN
clausule van een CASE
-expressieof het predikaat van een IF
of WHILE
flow control-statement.
Voor alle andere toepassingen, inclusief het gegevenstype van een kolom in een tabel, is boolean niet toegestaan. Voor die andere vormen van gebruik heeft het gegevenstype BIT
de voorkeur. Het gedraagt zich als een versmald INTEGER
dat alleen de waarden 0
, 1
en NULL
toelaat, tenzij verder beperkt met een NOT NULL
kolombeperking of een CHECK
beperking.
Om een BIT
-kolom in een booleaanse uitdrukking te gebruiken, moet deze worden vergeleken met behulp van een vergelijkingsoperator zoals =
, <>
of IS NULL
. bijv.
SELECT
a.answer_body
FROM answers AS a
WHERE a.is_accepted = 0;
Vanuit opmaakperspectief wordt een BIT
-waarde doorgaans weergegeven als 0
of 1
in clientsoftware. Wanneer een gebruiksvriendelijker formaat vereist is en het niet kan worden afgehandeld op een applicatielaag voor de database, kan het “just-in-time” worden geconverteerd met behulp van een CASE
-expressie, bijv.
SELECT
a.answer_body,
CASE a.is_accepted WHEN 1 THEN 'TRUE' ELSE 'FALSE' END AS is_accepted
FROM answers AS a;
Het opslaan van booleaanse waarden als een tekengegevenstype zoals char(1)
of varchar(5)
is ook mogelijk, maar dat is veel minder duidelijk, heeft meer opslagruimte/ netwerkoverhead, en vereist CHECK
-beperkingen voor elke kolom om illegale waarden te beperken.
Ter referentie, het schema van de tabel answers
zou er ongeveer zo uitzien:
CREATE TABLE answers (
...,
answer_body nvarchar(MAX) NOT NULL,
is_accepted bit NOT NULL DEFAULT (0)
);
Antwoord 5
Gebruik het gegevenstype BIT
. Het heeft de waarden 1 en 0 als het ermee omgaat in native T-SQL
Antwoord 6
U kunt BIT
DataType in SQL Server gebruiken om booleaanse gegevens op te slaan.
Antwoord 7
SQL Server gebruikt het BIT
datatype
Antwoord 8
Gebruik het BIT
-gegevenstype om booleaanse gegevens weer te geven. De waarde van een BIT
-veld is 1,0 of NULL.
create table <tablename> (
<columnName> bit
)
Tenzij je een threeway boolean wilt, moet je NOT NULL DEFAULT 0 toevoegen zoals:
create table <tablename> (
<columnName> bit not null default 0
)
Antwoord 9
Ik gebruik TINYINT(1)
datatype om Booleaanse waarden op te slaan in SQL Server, hoewel BIT
zeer effectief is