test=> CREATE TABLE chartest ( test(> charval1 CHAR(10) NOT NULL, test(> charval2 CHAR(10) NOT NULL, test(> varcharval VARCHAR(30) NOT NULL test(> ); CREATE TABLE test=> INSERT INTO chartest VALUES ('aaa','aaa','aaa'); INSERT 24600 1 test=> INSERT INTO chartest test-> VALUES ('aaaaaa ','aaa','aaa'); -- should truncate to 'aaaaaa ' INSERT 24601 1 test=> INSERT INTO chartest test-> VALUES ('aaaaaaaaaaaa','aaa','aaa'); -- should throw error ERROR: value too long for type character(10) test=> SELECT * FROM chartest; -- should show two rows charval1 | charval2 | varcharval ------------+------------+------------ aaa | aaa | aaa aaaaaa | aaa | aaa (2 rows) test=> DELETE FROM chartest WHERE charval1='aaaaaa'; DELETE 1 test=> SELECT * FROM chartest; -- shoud show one row charval1 | charval2 | varcharval ------------+------------+------------ aaa | aaa | aaa (1 row) test=> SELECT * FROM chartest WHERE charval1=varcharval; charval1 | charval2 | varcharval ------------+------------+------------ aaa | aaa | aaa (1 row) test=> SELECT charval1 || 'X' AS res FROM chartest; res ------ aaaX (1 row) test=> SELECT CHAR_LENGTH(charval1 || charval2) AS res FROM chartest; res ----- 6 (1 row) test=> SELECT CHAR_LENGTH(charval1) + CHAR_LENGTH(charval2) test-> AS res test-> FROM chartest; res ----- 20 (1 row)