Tipo de dados MySQL BIT

Resumo : neste tutorial, você aprenderá sobre BITo tipo de dados MySQL e como armazenar BITdados em uma coluna de uma tabela.

Introdução ao tipo de dados MySQL BIT

O BITtipo de dados que permite armazenar valores de bits, que são 0 e 1.

Aqui está a sintaxe para definir BITo tipo de uma coluna:

column_name BIT(n)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O BIT(n)pode armazenar valores de até n bits. O valor npode variar de 1 a 64. O valor padrão de n é 1 se você ignorá-lo.

Portanto, as seguintes sintaxes são equivalentes:

column_name BIT(1);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

e

column_name BIT;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Literais BIT

Para especificar um valor literal de bit, você usa a notação b'val'ou , que é um valor binário que contém apenas 0 e 1.0bvalval

O início bpode ser escrito como B, por exemplo, os seguintes são literais de bits válidos:

b01
B11Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

No entanto, o início 0bdiferencia maiúsculas de minúsculas. Portanto, você não pode usar 0B. Por exemplo, o seguinte é um valor literal de bit inválido:

0B'1000'Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Por padrão, o conjunto de caracteres de um literal de valor de bit é a sequência binária da seguinte forma:

SELECT CHARSET(B'); -- binaryLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Exemplos de tipos de dados MySQL BIT

A instrução a seguir cria uma nova tabela chamada working_calendarsque possui a coluna de dias BIT(7):

CREATE TABLE working_calendars(
    year INT,
    week INT,
    days BIT(7),
    PRIMARY KEY(year,week)
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Os valores da coluna daysindicam se o dia é dia útil ou dia de folga, ou seja, 1: dia útil e 0: dia de folga.

Suponha que sábado e sexta-feira da primeira semana de 2017 não sejam dias úteis, você pode inserir uma linha na working_calendarstabela:

INSERT INTO working_calendars(year,week,days)
VALUES(2017,1,B'1111100');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A consulta a seguir recupera dados da working_calendartabela:

SELECT 
    year, week, days
FROM
    working_calendars;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+------+------+------------+
| year | week | days       |
+------+------+------------+
| 2017 |    1 | 0x7C       |
+------+------+------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

A saída indica que o valor do bit na   dayscoluna é convertido em um número inteiro. Para representá-lo como valores de bits, você usa a BINfunção:

SELECT 
    year, week, bin(days)
FROM
    working_calendars;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+------+------+-----------+
| year | week | bin(days) |
+------+------+-----------+
| 2017 |    1 | 1111100   |
+------+------+-----------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Se você inserir um valor em uma BIT(n)coluna com menos de nbits, o MySQL preencherá zeros à esquerda do valor do bit.

Suponha que o primeiro dia da segunda semana esteja desligado, você pode inserir 01111100na   days coluna. No entanto, o  111100valor também funcionará porque o MySQL preencherá um zero à esquerda.

INSERT INTO working_calendars(year,week,days)
VALUES(2017,2,B'111100');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Para visualizar os dados você usa a mesma consulta acima:

SELECT 
    year, week , bin(days)
FROM
    working_calendars; Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+------+------+-----------+
| year | week | bin(days) |
+------+------+-----------+
| 2017 |    1 | 1111100   |
| 2017 |    2 | 111100    |
+------+------+-----------+
2 rows in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

A saída mostra que o MySQL removeu os zeros à esquerda antes de retornar o resultado. Para exibi-lo corretamente, você pode usar a LPAD()função:

SELECT 
    year, week, lpad(bin(days),7,'0')
FROM
    working_calendars;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+------+------+-----------------------+
| year | week | lpad(bin(days),7,'0') |
+------+------+-----------------------+
| 2017 |    1 | 1111100               |
| 2017 |    2 | 0111100               |
+------+------+-----------------------+
2 rows in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

A saída mostra o formato esperado.

Resumo

  • Use BITo tipo de dados MySQL para armazenar BITdados em uma tabela.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *