Существует ли тип булевых данных в Microsoft SQL Server, как в MySQL?
Если да, то какова альтернатива в MS SQL Server?
Существует ли тип булевых данных в Microsoft SQL Server, как в MySQL?
Если да, то какова альтернатива в MS SQL Server?
Вы можете использовать тип данных BIT для представления булевых данных. Значение поля BIT равно 1,0 или null.
Возможно, вы захотите использовать тип данных BIT, возможно, это значение NOT NULL:
Цитата статья MSDN:
бит (Transact-SQL)
Integer тип данных, который может принимать значение 1, 0 или NULL.
SQL Server Database Engine оптимизирует хранение столбцов бит. Если в таблице есть 8 или менее столбцов, столбцы хранятся как 1 байт. Если имеется от 9 до 16 бит столбцов, столбцы хранятся как 2 байта и т.д.
Строковые значения TRUE и FALSE могут быть преобразованы в значения бит: TRUE преобразуется в 1, а FALSE преобразуется в 0.
bit. Он сохраняет 1 или 0 (или NULL).В качестве альтернативы вы можете использовать строки 'true' и 'false' вместо 1 или 0, например:
declare @b1 bit = 'false'
print @b1                    --prints 0
declare @b2 bit = 'true'
print @b2                    --prints 1
Кроме того, любое значение не 0 (положительное или отрицательное) оценивается (или преобразуется в некоторых случаях) a 1.
declare @i int = -42
print cast(@i as bit)    --will print 1, because @i is not 0
Обратите внимание, что SQL Server использует три значения логики (true, false и NULL), так как NULL является возможным значением типа данных bit. Вот соответствующие таблицы истинности -
Дополнительная информация о трехзначной логике -
Пример трехзначной логики в 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/
В SQL Server существует тип данных boolean. Его значения могут быть TRUE, FALSE или UNKNOWN. Однако тип данных boolean является результатом только логического выражения, содержащего некоторую комбинацию операторов сравнения (например, =, <>, <, >=) или логические операторы (например, AND, OR, IN, EXISTS). Булевы выражения допускаются только в нескольких местах, включая предложение WHERE, HAVING, предложение WHEN выражения CASE или предикат IF или WHILE.
Для всех других применений, включая тип данных столбца в таблице, boolean не допускается. Для этих других применений предпочтительным является тип данных BIT. Он ведет себя как суженный INTEGER, который допускает только значения 0, 1 и NULL, если только это не ограничено ограничением столбца NOT NULL или CHECK.
Чтобы использовать столбец BIT в булевом выражении, его нужно сравнить с помощью оператора сравнения, такого как =, <> или IS NULL. например.
SELECT
    a.answer_body
FROM answers AS a
WHERE a.is_accepted = 0;
С точки зрения форматирования значение BIT обычно отображается как 0 или 1 в клиентском программном обеспечении. Когда требуется более удобный формат, и он не может обрабатываться на уровне приложения перед базой данных, его можно преобразовать "точно в срок", используя выражение CASE, например.
SELECT
    a.answer_body,
    CASE a.is_accepted WHEN 1 THEN 'TRUE' ELSE 'FALSE' END AS is_accepted
FROM answers AS a;
Сохранение логических значений в виде символьного типа данных, например, char(1) или varchar(5), также возможно, но это намного менее понятно, имеет больше ресурсов для хранения/сети и требует ограничений CHECK для каждого столбца для ограничения незаконных значений.
Для справки схема таблицы answers будет похожа на:
CREATE TABLE answers (
    ...,
    answer_body nvarchar(MAX) NOT NULL,
    is_accepted bit NOT NULL DEFAULT (0)
);
Вы можете использовать Bit DataType в SQL Server для хранения логических данных.
Используйте тип данных Bit. Он имеет значения 1 и 0 при работе с ним в собственном T-SQL
SQL Server использует тип данных Bit
Я использую тип данных TINYINT(1) для хранения логических значений в SQL Server, хотя BIT очень эффективен