Is er een Booleaans gegevenstype in Microsoft SQL Server zoals in MySQL?

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 BITgebruiken 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 BITgegevenstype, 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, FALSEen NULL), aangezien NULLis een mogelijke waarde van het gegevenstype BIT. Hier zijn de relevante waarheidstabellen –

voer hier de afbeeldingsbeschrijving in

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, FALSEof UNKNOWNzijn. 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 WHEREclausule, HAVINGclausule, de WHENclausule van een CASE-expressieof het predikaat van een IFof WHILEflow 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 BITde voorkeur. Het gedraagt ​​zich als een versmald INTEGERdat alleen de waarden 0, 1en NULLtoelaat, tenzij verder beperkt met een NOT NULLkolombeperking of een CHECKbeperking.

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 0of 1in 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 answerszou 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 BITDataType in SQL Server gebruiken om booleaanse gegevens op te slaan.


Antwoord 7

SQL Server gebruikt het BITdatatype


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 BITzeer effectief is

LEAVE A REPLY

Please enter your comment!
Please enter your name here

fifteen − seven =

Other episodes