Não é um bug.
Convertendo a string literal
'ab '
para character
, Isto é o que você recebe:a
Por documentação:
character
sem especificador de comprimento é equivalente acharacter(1)
.
'a'::character(1)
será então forçado a varchar
(character varying
) para testar a igualdade com 'a'::varchar
ou 'ab'::varchar
e produzir TRUE
ou FALSE
respectivamente. Basicamente, não há nenhuma boa razão para usar
character
tudo . É um tipo de legado que sobreviveu à sua utilidade. Basta usar text
ou varchar
. - Alguma desvantagem de usar o tipo de dados "texto" para armazenar strings?