DBAtlas · Atlas de operaciones de bases de datos

22026: string_data_length_mismatch

PostgreSQL

¿Qué significa?

La longitud de una cadena de bits no coincide con la longitud fija que exige la operación. En PostgreSQL aparece sobre todo cuando se escribe una cadena de bits de otra longitud en un tipo bit(n) de longitud fija, o cuando se aplica AND/OR/XOR bit a bit a cadenas de bits de distinta longitud.

¿Por qué ocurre?

Escribir una cadena de bits más corta/larga que n en una columna bit(n) (p. ej., B'101' en una columna bit(4): 'bit string length 3 does not match type bit(4)'), o aplicar &, |, # a cadenas de bits de distinta longitud ('cannot AND bit strings of different sizes'). No se debe al texto ni a la codificación de caracteres; un valor demasiado largo para char(n)/varchar(n) genera en su lugar 22001.

Cómo solucionarlo

Lleve el valor a la longitud de destino: use un cast explícito (B'101'::bit(4) rellena con ceros a la derecha y trunca el exceso), o defina la columna como bit varying(n) si la longitud puede variar. Convierta los operandos a la misma longitud antes de las operaciones bit a bit; revise la longitud con length().

Abrir en DBAtlas →

Más entradas de este motor