Jak utworzyć pole logiczne tak/nie w SQL server?

Jaka jest najlepsza praktyka tworzenia yes/no tj. Boolean pola podczas konwersji z access database lub ogólnie?

Author: Muhammad Waheed, 2009-11-22

11 answers

Odpowiednikiem jest pole BIT.

W SQL używasz 0 i 1 aby ustawić pole bitowe(podobnie jak Pole tak/nie w Access). W Management Studio wyświetla się jako wartość false/true (przynajmniej w najnowszych wersjach).

Podczas uzyskiwania dostępu do bazy danych poprzez ASP.NET wyświetli pole jako wartość logiczną.

 482
Author: Guffa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-19 06:50:21

Typ danych BIT jest zwykle używany do przechowywania boolean wartości (0 dla false, 1 dla true).

 119
Author: Alex Martelli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-02 12:26:41

Możesz użyć typu kolumny bit.

 27
Author: Mark Byers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-22 00:18:48

Możesz użyć pola BIT.

Aby dodać kolumnę bitową do istniejącej tabeli, polecenie SQL wyglądałoby następująco:

ALTER TABLE table_name ADD yes_no BIT

Jeśli chcesz utworzyć nową tabelę, możesz to zrobić: CREATE TABLE table_name (yes_no BIT).

 23
Author: John Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-30 18:51:19

Możesz użyć typu danych bit

Wartości, które są większe niż 0, będą przechowywane jako " 1 "

Wartości, które są mniejsze niż 0, zostaną zapisane jako " 1 "

Wartości wstawione jako " 0 "będą przechowywane jako" 0 "

Dotyczy to MS SQL Server 2012 Express

 21
Author: P_Fitz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-16 18:53:27

Istnieją już odpowiedzi mówiące o użyciu bitu. Dodam więcej do tych odpowiedzi.

Powinieneś użyć bit do reprezentowania wartości logicznych.

Uwagi z artykułu MSDN.

Bit może przyjmować wartość 1, 0 lub NULL.

Silnik bazy danych SQL Server optymalizuje przechowywanie kolumn bitowych. Jeśli w tabeli jest 8 lub mniej kolumn bitowych, kolumny są przechowywane jako 1 bajt. Jeśli jest od 9 do 16 bitowych kolumn, kolumny są zapisanych jako 2 bajty, a więc on

Wartości łańcuchowe TRUE I FALSE można przekonwertować na wartości bitowe: TRUE jest konwertowane na 1, A FALSE jest konwertowane na 0.

Konwersja na bit Promuje dowolną wartość niezerową do 1.

Odniesienie

Uwaga: dobrą praktyką jest zachowywanie wartości jako 1 i 0 tylko dla typu danych NOT NULL

Jako Bit mają wartości 1, 0 I NULL. Zobacz tabelę prawdy. Więc planuj wartości odpowiednio. Może to dodać zamieszanie, zezwalając na wartość NULL dla danych bitowych Typ.

Tutaj wpisz opis obrazka

Odniesienie

 18
Author: Somnath Muluk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Przykładowe użycie podczas tworzenia tabeli:

[ColumnName]     BIT   NULL   DEFAULT 0
 16
Author: torina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-24 14:58:59

Możesz użyć pola BIT

Aby utworzyć nową tabelę:

CREATE TABLE Tb_Table1
(
ID              INT,
BitColumn       BIT DEFAULT 1
)

Dodanie kolumny w istniejącej tabeli:

ALTER TABLE Tb_Table1 ADD BitColumn  BIT DEFAULT 1

Aby wstawić rekord:

INSERT Tb_Table1 VALUES(11,0)
 15
Author: Sachith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-12 18:55:09

bit będzie najprostszy, a także zajmuje najmniej miejsca. Niezbyt gadatliwy w porównaniu do "Y / N", ale nie przeszkadza mi to.

 10
Author: o.k.w,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-22 00:21:27

bit jest najbardziej odpowiednią opcją. W przeciwnym razie kiedyś użyłem int do tego celu. 1 dla true & 0 dla false.

 6
Author: Baqer Naqvi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-17 12:25:52

W SQL Server Management Studio dowolnej wersji użyj BIT jako typu danych

, który zapewni Ci opcje wartości True lub False. jeśli chcesz użyć tylko 1 lub 0, możesz użyć tej metody:

CREATE TABLE SampleBit(
    bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1))
)

Ale będę ściśle doradzał {[1] } jako najlepszą opcję . Mam nadzieję, że to ktoś pomoże.

 2
Author: PatsonLeaner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-01 10:07:00