Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Tipo di dati BIT di SQL Server:guida definitiva

Introduzione al tipo di dati bit

Il tipo di dati rappresenta un attributo che memorizza numero intero, carattere, ora dei dati, dati binari. Supponiamo di avere un'applicazione web per registrare il feedback degli utenti per varie domande. Contiene più domande dicotomiche e alcune domande basate su caselle di testo, come le osservazioni. Sul back-end, queste risposte vengono archiviate in una tabella SQL.

Per progettare la tabella, definiamo colonne e tipi di campo del database. SQL Server supporta vari tipi di dati come intero, char, varchar(), float, DateTime, numerico e così via. Lo stesso può essere applicato ai tipi di dati T-SQL. Per saperne di più sui tipi di dati, fare riferimento alla documentazione ufficiale. I casi d'uso dipendono dai valori che desideriamo archiviarvi.

Supponiamo di avere colonne specifiche in quella tabella che abbiamo creato. Tali colonne accettano valori booleani 1,0 o TRUE\False. SQL. Pertanto, in SQL Server, un particolare tipo di dati booleano:Bit è fornito.

Il bit di SQL Server è un tipo di dati intero che accetta valori 0,1 e NULL. È disponibile in tutte le versioni di SQL Server, inclusi Azure SQL Server, Istanze gestite di Azure e SQL nella macchina virtuale di Azure.

Archiviazione del tipo di dati bit

In termini di archiviazione, il tipo di dati Bit è ottimizzato da SQL Server. Se nella tabella sono presenti otto o meno colonne Bit, SQL Server le archivia come 1 byte. Allo stesso modo, per colonne da 9 a 16 bit, consuma 2 byte. Inoltre, SQL Server converte i valori String TRUE e FALSE nei valori corrispondenti 1 e 0.

Sintassi

La sintassi del tipo di dati BIT in SQL Server è semplice:

 Bit

Utilizzo pratico del tipo di dati bit

Il seguente script T-SQL crea una tabella di prodotto e inserisce due valori di dati di prodotto in essa:

  • Se il prodotto è disponibile, il bit della colonna [Disponibile] è impostato su 1.
  • Se il prodotto non è disponibile, il bit della colonna [Disponibile] è impostato su 0.
CREATE TABLE Products (
    [ProductName] varchar(20),
    [Available] BIT
);
Go
INSERT INTO Products (productname,available) values('A',1)
INSERT INTO Products (productname,available) values('B',0)
GO
SELECT * FROM Products

Tronchiamo la tabella [Prodotti] e inseriamo i suoi valori utilizzando le stringhe TRUE e False.

TRUNCATE TABLE Products
INSERT INTO Products (productname,available) values('A','TRUE')
INSERT INTO Products (productname,available) values('B','False')
GO
SELECT * FROM Products

Come mostrato di seguito, SQL Server converte la stringa TRUE in 1 e False in 0.

Tuttavia, se si tenta di inserire altri valori, come Sì o No, nel tipo di dati Bit, viene visualizzato il messaggio di errore "Conversione non riuscita".

INSERT INTO Products (productname,available) values('A','Yes')

Quando si inserisce un valore diverso da zero nella colonna del tipo di dati Bit, SQL Server converte tale valore in uno. Ad esempio, nello script seguente, inseriamo il valore 100 nella colonna [disponibile]. Durante questo periodo non si verificano messaggi di errore.

Se selezioni i record, convalidi che il valore inserito è 1.

INSERT INTO Products (productname,available) values('A',100)
SELECT * FROM Products;

Allo stesso modo, SQL Server converte il valore negativo nel valore 1 nella colonna Bit. Come mostrato di seguito, inseriamo il valore -100 nella colonna [disponibile]. Riceviamo valore uno mentre lo recuperiamo:

INSERT INTO Products (productname,available) values('A',-100)
SELECT * FROM Products;

In precedenza, utilizzavamo il tipo di dati Bit per verificare la disponibilità del prodotto. Di solito abbiamo bisogno di visualizzare il testo nel front-end invece dei bit 1 e 0. Pertanto, possiamo utilizzare l'istruzione CASE in SQL Server.

Nel codice T-SQL seguente, l'istruzione CASE restituisce:

  • Valore 1:il prodotto è disponibile
  • Valore 0:Esaurito
SELECT [ProductName], CASE [Available]
         WHEN 1 then  'Product is available.'
        WHEN 0 then 'Out of Stock'
        ELSE 'NA'
    END AS [Availability]
from products

Come abbiamo potuto vedere in precedenza, SQL Server ottimizza l'archiviazione per il tipo di dati Bit. La seguente [TestTable] ha otto colonne con il tipo di dati Bit; pertanto, utilizza 1 byte per l'archiviazione.

CREATE TABLE TestTable (
    [Column1] Bit,
    [Column2] Bit,
    [Column3] Bit,
    [Column4] Bit,
    [Column5] Bit,
    [Column6] Bit,
    [Column7] Bit,
    [Column8] Bit,
);

In alternativa, se utilizzi tinyint o Tipo di dati Char(1) , consumerebbe 1 byte per ogni colonna. Dovresti usare il tipo di dati Bit, mentre richiedi il valore booleano.

È inoltre possibile utilizzare il tipo di dati Bit nelle procedure o nelle funzioni memorizzate che restituiscono valori booleani. Ad esempio, abbiamo il fn_customer() funzione che controlla l'ID cliente e, se esiste, restituisce valore un altro restituisce 0.

CREATE FUNCTION fn_customer
(
   @CustomerID INT
)
RETURNS bit
AS
BEGIN
IF EXISTS (
SELECT [CustomerID] FROM [SalesLT].[Customer] 
WHERE [CustomerID][email protected] 
)
      RETURN 1
    RETURN 0
 END

Questa funzione richiede l'ID cliente come parametro di input. Se lo eseguiamo con l'ID cliente 10, viene visualizzato il seguente messaggio:

IF (dbo.fn_customer(10)=1)
   PRINT 'Customer record is available'
ELSE 
   PRINT 'Customer record is not available'

Tuttavia, se l'ID cliente non esiste in [SalesLT].[Cliente] tabella, la funzione restituisce il valore 0. La condizione del blocco IF non è vera. Pertanto, ottieni il messaggio specificato nella clausola ELSE:

Conclusione

Il tipo di dati bit di tipo booleano MSSQL è utile per le colonne che accettano valori 0,1 o NULL. SQL Server ottimizza l'archiviazione del tipo di dati Bit; pertanto, rende il codice compatto ed efficiente. Allo stesso modo, puoi usarlo per restituire valori booleani da una procedura o una funzione memorizzata.

Leggi anche

Gestire efficacemente i valori NULL con la funzione SQL COALESCE per principianti