DBAtlas · Atlas de operações de banco de dados

22026: string_data_length_mismatch

PostgreSQL

O que significa?

O comprimento de uma string de bits não corresponde ao comprimento fixo exigido pela operação. No PostgreSQL, ocorre com mais frequência quando uma string de bits de outro comprimento é gravada em um tipo bit(n) de comprimento fixo, ou quando AND/OR/XOR bit a bit é aplicado a strings de bits de comprimentos diferentes.

Por que acontece?

Gravar uma string de bits menor/maior que n em uma coluna bit(n) (por exemplo, B'101' em uma coluna bit(4): 'bit string length 3 does not match type bit(4)'), ou aplicar &, |, # a strings de bits de comprimentos diferentes ('cannot AND bit strings of different sizes'). Não é causado por texto ou codificação de caracteres; um valor longo demais para char(n)/varchar(n) gera, em vez disso, 22001.

Como resolver

Ajuste o valor ao comprimento de destino: use um cast explícito (B'101'::bit(4) completa com zeros à direita e trunca o excesso) ou defina a coluna como bit varying(n) se o comprimento puder variar. Converta os operandos para o mesmo comprimento antes de operações bit a bit; verifique o comprimento com length().

Abrir no DBAtlas →

Mais entradas deste banco