Existe um tipo de dados booleano no servidor SQL da Microsoft como existe no MySQL?

Existe um tipo de dados booleanos no servidor SQL da Microsoft como existe no MySQL?

Em caso afirmativo, qual é a alternativa no servidor de MS SQL?

Author: iliketocode, 2010-06-29

8 answers

Você poderia usar o BIT Tipo de dados para representar dados booleanos. O valor do campo a BIT é de 1,0 ou nulo.

 353
Author: kristian, 2017-11-08 10:18:34

Pode querer usar o BIT tipo de dados, provavelmente a configuração é como NOT NULL:

Citando o artigo MSDN:

Bit (Transact-SQL)

Um tipo de dados inteiros que pode ter um valor de 1, 0, ou nulo.

O motor de Base de Dados SQL Server optimiza o armazenamento de colunas de bits. Se houver 8 ou menos bit colunas em uma tabela, as colunas são armazenadas como 1 byte. Se houver de 9 a 16 bit colunas, as colunas são armazenadas como 2 bytes, e assim por diante.

Os valores de texto TRUE E FALSE podem ser convertidos para valores de bits: TRUE é convertido para 1 e FALSE é convertido para 0.

 76
Author: Daniel Vassallo, 2010-06-29 05:19:07

Estás à procura de um bit. Armazena 1 ou 0 (ou NULL).

Em alternativa, pode usar as cordas 'true' e {[5] } no lugar de 1 ou 0, como o so -

declare @b1 bit = 'false'
print @b1                    --prints 0

declare @b2 bit = 'true'
print @b2                    --prints 1

Além disso, qualquer valor não 0 (positivo ou negativo) avalia a (ou converte em alguns casos) a 1.

declare @i int = -42
print cast(@i as bit)    --will print 1, because @i is not 0

Note que o servidor SQL usa uma lógica de três valores(true, false, e NULL), uma vez que NULL é um possível VALOR do tipo de dados bit. Aqui estão as tabelas de verdade relevantes-

enter image description here

Mais informações sobre a lógica de três valores -

Exemplo de lógica de três valores no servidor SQL

Http://www.firstsql.com/idefend3.htm

Https://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued-logic/

 35
Author: iliketocode, 2017-07-19 17:38:55

Existe um tipo de dados booleanos no servidor SQL. Os seus valores podem ser TRUE, FALSE ou UNKNOWN. No entanto, o tipo de dados booleano é apenas o resultado de uma expressão booleana contendo uma combinação de operadores de comparação (e.g. =, <>, <, >=) ou operadores lógicos (e.g. AND, OR, IN, EXISTS). Expressões booleanas só são permitidas em um punhado de lugares, incluindo o WHERE cláusula, HAVING cláusula, cláusula WHEN CASE expressão ou o predicado de um IF ou WHILE declaração de controlo de fluxo.

Para todos os outros usos, incluindo o tipo de dados de uma coluna numa tabela, booleano não é permitido. Para esses outros usos, O BIT O tipo de dados é preferido. Comporta-se como um estreitamento INTEGER que permite apenas os valores 0, 1 e NULL, a menos que seja restringida com uma restrição de coluna NOT NULL ou uma restrição CHECK.

Para utilizar um BIT a coluna numa expressão booleana precisa de ser comparada com um operador de comparação, como =, <> ou IS NULL. por exemplo

SELECT
    a.answer_body
FROM answers AS a
WHERE a.is_accepted = 0;

De uma perspectiva de formatação, um valor bit é normalmente apresentado como 0 ou 1 em software cliente. Quando é necessário um formato mais fácil de usar, e não pode ser manuseado em um nível de aplicação na frente da base de dados, ele pode ser convertido "just-in-time" usando uma expressão CASE por exemplo

SELECT
    a.answer_body,
    CASE a.is_accepted WHEN 1 THEN 'TRUE' ELSE 'FALSE' END AS is_accepted
FROM answers AS a;

Guardar os valores booleanos como um carácter o tipo de dados como char(1) ou varchar(5) também é possível, mas isso é muito menos claro, tem mais armazenamento/sobrecarga de rede, e requer CHECK restrições em cada coluna para restringir valores ilegais.

Para referência, o esquema da tabela answers seria semelhante a:

CREATE TABLE answers (
    ...,
    answer_body nvarchar(MAX) NOT NULL,
    is_accepted bit NOT NULL DEFAULT (0)
);
 31
Author: Mark Chesney, 2016-08-06 19:55:34

Usa o Bit Tipo de dados. Tem valores 1 e 0 ao lidar com ele em T-SQL nativo

 7
Author: Rodrick Chapman, 2016-08-06 19:56:15

Pode usar Bit o tipo de dados no servidor SQL para armazenar dados booleanos.

 7
Author: Pranay Rana, 2016-08-06 19:56:29

O servidor SQL usa o Bit datatype

 6
Author: HackedByChinese, 2016-08-06 19:56:03

Eu uso TINYINT(1)o tipo de dados para armazenar os valores booleanos no servidor SQL, embora BIT seja muito eficaz

 0
Author: Bipul Roy, 2017-11-14 06:33:52