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?