Wcale nie jest to błąd.
Przesyłanie literału ciągu znaków 'ab ' na character , oto co otrzymujesz:
a
Zgodnie z dokumentacją:
character bez specyfikatora długości jest równoważne z character(1) .
'a'::character(1) zostanie wtedy zmuszona do varchar (character varying ), aby przetestować równość z 'a'::varchar lub 'ab'::varchar i uzyskaj TRUE lub FALSE odpowiednio.
Zasadniczo nie ma prawie żadnego dobrego powodu, aby używać character w ogóle . To przestarzały typ, który przeżył swoją przydatność. Po prostu użyj text lub varchar .
- Jakieś wady używania typu danych „tekst” do przechowywania ciągów?