Categorias:

Funções de expressões bit a bit

BITSHIFTLEFT

Move os bits para uma expressão numérica n posições para a esquerda.

Aliases:

BIT_SHIFTLEFT

Consulte também:

BITSHIFTRIGHT

Sintaxe

BITSHIFTLEFT( <expr1> , <n> )
Copy

Argumentos

expr1

Esta expressão deve ser avaliada como um tipo de dados que pode ser convertido em INTEGER.

n

O número de bits a serem movidos.

Retornos

Isto retorna um inteiro assinado de 128 bits (16 bytes), independentemente do tamanho ou tipo de dados do valor dos dados de entrada.

Notas de uso

  • Se o tipo de dados de qualquer argumento for numérico mas não INTEGER (por exemplo, FLOAT, DECIMAL etc.), então esse argumento será convertido em INTEGER.

  • Se o tipo de dados de qualquer argumento for uma cadeia de caracteres (por exemplo, VARCHAR), então o argumento será convertido em INTEGER se possível. Por exemplo, a cadeia de caracteres ‘12,3’ será convertida em 12. Se o valor não puder ser convertido em INTEGER, então o valor será tratado como NULL.

  • Se qualquer argumento for NULL, o resultado será NULL.

  • O resultado é um número inteiro assinado. Se o valor do bit alto mudar (de 0 para 1, ou de 1 para 0), o sinal do resultado será invertido. Por exemplo, BITSHIFTLEFT(1, 127) retorna um número negativo.

  • Os bits que são deslocados para além do final do valor de saída de 128 bits são descartados.

Exemplos

Este exemplo mostra como usar BITSHIFTLEFT e BITSHIFTRIGHT:

Criar uma tabela e dados simples:

CREATE TABLE bits (ID INTEGER, bit1 INTEGER, bit2 INTEGER);
Copy
INSERT INTO bits (ID, bit1, bit2) VALUES 
    (   11,    1,     1),    -- Bits are all the same.
    (   24,    2,     4),    -- Bits are all different.
    (   42,    4,     2),    -- Bits are all different.
    ( 1624,   16,    24),    -- Bits overlap.
    (65504,    0, 65504),    -- Lots of bits (all but the low 6 bits)
    (    0, NULL,  NULL)     -- No bits
    ;
Copy

Executar a consulta:

SELECT bit1, bit2, BITSHIFTLEFT(bit1, 1), BITSHIFTRIGHT(bit2, 1)
  FROM bits
  ORDER BY bit1;
Copy

Saída:

+------+-------+-----------------------+------------------------+
| BIT1 |  BIT2 | BITSHIFTLEFT(BIT1, 1) | BITSHIFTRIGHT(BIT2, 1) |
|------+-------+-----------------------+------------------------|
|    0 | 65504 |                     0 |                  32752 |
|    1 |     1 |                     2 |                      0 |
|    2 |     4 |                     4 |                      2 |
|    4 |     2 |                     8 |                      1 |
|   16 |    24 |                    32 |                     12 |
| NULL |  NULL |                  NULL |                   NULL |
+------+-------+-----------------------+------------------------+
Copy