Как создать логическое поле да / нет на сервере SQL?

Как лучше всего создать поле yes/no, т.е. Boolean при преобразовании из access database или в целом?


person leora    schedule 22.11.2009    source источник


Ответы (11)


Эквивалент - поле BIT.

В SQL вы используете 0 и 1 для установки битового поля (так же, как поле да / нет в Access). В Management Studio он отображается как ложное / истинное значение (по крайней мере, в последних версиях).

При доступе к базе данных через ASP.NET поле отображается как логическое значение.

person Guffa    schedule 22.11.2009
comment
И если вы свяжете таблицу в базе данных Access, true будет иметь значение -1, а false будет иметь значение 0. По крайней мере, в Access 2003. (Это версия, которая была у меня под рукой, которая была подключена к базе данных MSSQL клиента). - person Henrik Erlandsson; 20.09.2013
comment
Обратите внимание, что это не совсем эквивалент. Если скалярная функция возвращает бит, вам все равно нужно проверить, равен ли он 0 или 1. Например, dbo.IsReturnsBit (value) = 1 - person Darren Griffith; 19.09.2014
comment
@ D-Money: Да, но вам нужно выполнить сравнение, только если вы хотите использовать значение в условии. Если вы используете значение в результате, вам не следует проводить сравнение. - person Guffa; 07.06.2015
comment
Что касается Mgt Studio, если вы копируете + вставляете данные, вам также необходимо, чтобы они были как True / False, а не как 1 или 0. - person gorlaz; 28.10.2015

Тип данных BIT обычно используется для хранения boolean значений (0 для false, 1 для true).

person Alex Martelli    schedule 22.11.2009
comment
BIT указан в стандарте SQL? Мне трудно его найти. Ближайшее, что я мог видеть, - это логический тип. - person asgs; 01.07.2016
comment
Вас вообще беспокоит различие семантики битов и логических значений? - person Darth Egregious; 14.03.2017

Вы можете использовать тип столбца bit.

person Mark Byers    schedule 22.11.2009

Вы можете использовать поле BIT.

Для добавления столбца BIT в существующую таблицу команда SQL будет выглядеть так:

ALTER TABLE table_name ADD yes_no BIT

Если вы хотите создать новую таблицу, вы можете сделать: CREATE TABLE table_name (yes_no BIT).

person John Mark    schedule 30.07.2013

Вы можете использовать тип данных bit

Вставленные значения больше 0 будут сохранены как '1'.

Вставленные значения меньше 0 будут сохранены как '1'.

Значения, вставленные как «0», будут сохранены как «0».

Это верно для MS SQL Server 2012 Express.

person P_Fitz    schedule 16.10.2013
comment
Вы уверены в утверждении относительно значений меньше 0? - person BiLaL; 03.12.2015
comment
@BiLaL Это обычное поведение для большинства языков. 0 ложно, любое число, отличное от 0, истинно. Также часто -1 было значением по умолчанию для истины, потому что в двоичном формате со знаком каждый бит установлен в 1. В настоящее время очень часто встречается 1 как значение по умолчанию для истины (установлен только младший значащий бит). - person CJ Dennis; 27.06.2016

Уже есть ответы, говорящие об использовании Bit. Я дополню эти ответы.

Для представления логических значений следует использовать bit.

Замечания из статьи MSDN.

Бит может принимать значение 1, 0 или NULL.

Компонент SQL Server Database Engine оптимизирует хранение битовых столбцов. Если в таблице 8 или менее битовых столбцов, они сохраняются как 1 байт. Если имеется от 9 до 16 битных столбцов, столбцы сохраняются как 2 байта и так далее.

Строковые значения ИСТИНА и ЛОЖЬ могут быть преобразованы в битовые значения: ИСТИНА преобразуется в 1, а ЛОЖЬ преобразуется в 0.

Преобразование в бит переводит любое ненулевое значение в 1.

Справочник

Примечание. Рекомендуется сохранять значения 1 и 0 только с типом данных NOT NULL.

As Bit имеют значения 1, 0 и NULL. См. Таблицу истинности для этого. Так что планируйте ценности соответственно. Это может внести путаницу, если разрешить значение NULL для битового типа данных.

введите описание изображения здесь

Справочник < / а>

person Somnath Muluk    schedule 16.09.2016
comment
Bit can take a value of 1, 0, or NULL. Если битовый тип данных допускает значения NULL, мне не нужно указывать NULL в определении поля? Это определение заставляет меня думать, что [field1] [bit] NULL и [field1] [bit] эквивалентны? - person spencer741; 08.02.2021

Пример использования при создании таблицы:

[ColumnName]     BIT   NULL   DEFAULT 0
person torina    schedule 24.02.2017

Вы можете использовать поле BIT

Чтобы создать новую таблицу:

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

Добавление столбца в существующую таблицу:

ALTER TABLE Tb_Table1 ADD BitColumn  BIT DEFAULT 1

Чтобы вставить запись:

INSERT Tb_Table1 VALUES(11,0)
person Sachith    schedule 12.04.2017

bit будет самым простым и при этом займет меньше всего места. Не очень многословно по сравнению с «Д / Н», но меня это устраивает.

person o.k.w    schedule 22.11.2009
comment
Думаю, это лучше - не нужно беспокоиться о Y == y и N = n, истинном или ложном. Намерение совершенно очевидно, и нет особых случаев, когда односимвольные поля приглашают :) - person Rob Grant; 15.01.2014

bit - самый подходящий вариант. В противном случае я однажды использовал int для этой цели. 1 для true & 0 для false.

person Baqer Naqvi    schedule 17.03.2016
comment
Обычно используется 0 для False и ненулевое значение для True. - person Edu; 15.07.2016
comment
есть много вкусов или правда может сказать хороший политик: D - person Buda Florin; 02.12.2016

В SQL Server Management Studio любой версии используйте BIT в качестве типа данных

который предоставит вам варианты True или False значений. если вы хотите использовать Only 1 или 0, вы можете использовать этот метод:

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

Но я строго рекомендую BIT как ЛУЧШИЙ вариант. Надеюсь полностью это поможет кому-то.

person PatsonLeaner    schedule 01.08.2019