- Categorias:
BITNOT¶
Retorna a negação bit a bit de uma expressão numérica ou binária.
- Aliases:
BIT_NOT
Sintaxe¶
BITNOT( <expr> )
Argumentos¶
expr
Esta expressão deve ser avaliada como um valor INTEGER, um valor BINARY ou um valor de um tipo de dados que pode ser convertido em um valor INTEGER.
Retornos¶
Retorna um valor INTEGER, BINARY ou NULL:
Quando a expressão de entrada contém um valor INTEGER, retorna um valor INTEGER que representa a negação bit a bit da expressão de entrada.
Quando a expressão de entrada contém um valor BINARY, retorna um valor BINARY que representa a negação bit a bit da expressão de entrada.
Se o valor de entrada for NULL, retorna NULL.
Notas de uso¶
Se o tipo de dados do argumento for numérico, mas não for INTEGER (por exemplo, FLOAT, DECIMAL etc.), o argumento será convertido em um valor INTEGER.
Se o tipo de dados do argumento for uma cadeia de caracteres (por exemplo, VARCHAR), o argumento será convertido para um valor INTEGER, se possível. Por exemplo, a cadeia de caracteres
12.3
é convertida para12
. Se o valor não puder ser convertido em um valor INTEGER, o valor será tratado como NULL.A função não converte implicitamente argumentos em valores BINARY.
Exemplos¶
As seções a seguir contêm exemplos de valores de argumento INTEGER e valores de argumento BINARY.
Como usar BITNOT com valores de argumento INTEGER¶
Criar uma tabela e dados simples:
CREATE OR REPLACE TABLE bits (ID INTEGER, bit1 INTEGER, bit2 INTEGER);
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.
;
Executar a consulta:
SELECT bit1,
bit2,
BITNOT(bit1),
BITNOT(bit2)
FROM bits
ORDER BY bit1;
+------+-------+--------------+--------------+
| BIT1 | BIT2 | BITNOT(BIT1) | BITNOT(BIT2) |
|------+-------+--------------+--------------|
| 0 | 65504 | -1 | -65505 |
| 1 | 1 | -2 | -2 |
| 2 | 4 | -3 | -5 |
| 4 | 2 | -5 | -3 |
| 16 | 24 | -17 | -25 |
| NULL | NULL | NULL | NULL |
+------+-------+--------------+--------------+
Como usar BITNOT com valores de argumento BINARY¶
Crie uma tabela simples e insira os dados:
CREATE OR REPLACE TABLE bits (ID INTEGER, bit1 BINARY(2), bit2 BINARY(2), bit3 BINARY(4));
INSERT INTO bits VALUES
(1, x'1010', x'0101', x'11001010'),
(2, x'1100', x'0011', x'01011010'),
(3, x'BCBC', x'EEFF', x'ABCDABCD'),
(4, NULL, NULL, NULL);
Nota
Os valores BINARY são inseridos usando a notação x'value'
, onde value
contém dígitos hexadecimais. Para obter mais informações, consulte Entrada e saída de binários.
Executar a consulta:
SELECT bit1,
bit2,
bit3,
BITNOT(bit1),
BITNOT(bit2),
BITNOT(bit3)
FROM bits;
+------+------+----------+--------------+--------------+--------------+
| BIT1 | BIT2 | BIT3 | BITNOT(BIT1) | BITNOT(BIT2) | BITNOT(BIT3) |
|------+------+----------+--------------+--------------+--------------|
| 1010 | 0101 | 11001010 | EFEF | FEFE | EEFFEFEF |
| 1100 | 0011 | 01011010 | EEFF | FFEE | FEFEEFEF |
| BCBC | EEFF | ABCDABCD | 4343 | 1100 | 54325432 |
| NULL | NULL | NULL | NULL | NULL | NULL |
+------+------+----------+--------------+--------------+--------------+