1-- 2-- CHAR 3-- 4-- fixed-length by value 5-- internally passed by value if <= 4 bytes in storage 6SELECT char 'c' = char 'c' AS true; 7 true 8------ 9 t 10(1 row) 11 12-- 13-- Build a table for testing 14-- 15CREATE TABLE CHAR_TBL(f1 char); 16INSERT INTO CHAR_TBL (f1) VALUES ('a'); 17INSERT INTO CHAR_TBL (f1) VALUES ('A'); 18-- any of the following three input formats are acceptable 19INSERT INTO CHAR_TBL (f1) VALUES ('1'); 20INSERT INTO CHAR_TBL (f1) VALUES (2); 21INSERT INTO CHAR_TBL (f1) VALUES ('3'); 22-- zero-length char 23INSERT INTO CHAR_TBL (f1) VALUES (''); 24-- try char's of greater than 1 length 25INSERT INTO CHAR_TBL (f1) VALUES ('cd'); 26ERROR: value too long for type character(1) 27INSERT INTO CHAR_TBL (f1) VALUES ('c '); 28SELECT '' AS seven, * FROM CHAR_TBL; 29 seven | f1 30-------+---- 31 | a 32 | A 33 | 1 34 | 2 35 | 3 36 | 37 | c 38(7 rows) 39 40SELECT '' AS six, c.* 41 FROM CHAR_TBL c 42 WHERE c.f1 <> 'a'; 43 six | f1 44-----+---- 45 | A 46 | 1 47 | 2 48 | 3 49 | 50 | c 51(6 rows) 52 53SELECT '' AS one, c.* 54 FROM CHAR_TBL c 55 WHERE c.f1 = 'a'; 56 one | f1 57-----+---- 58 | a 59(1 row) 60 61SELECT '' AS five, c.* 62 FROM CHAR_TBL c 63 WHERE c.f1 < 'a'; 64 five | f1 65------+---- 66 | 67(1 row) 68 69SELECT '' AS six, c.* 70 FROM CHAR_TBL c 71 WHERE c.f1 <= 'a'; 72 six | f1 73-----+---- 74 | a 75 | 76(2 rows) 77 78SELECT '' AS one, c.* 79 FROM CHAR_TBL c 80 WHERE c.f1 > 'a'; 81 one | f1 82-----+---- 83 | A 84 | 1 85 | 2 86 | 3 87 | c 88(5 rows) 89 90SELECT '' AS two, c.* 91 FROM CHAR_TBL c 92 WHERE c.f1 >= 'a'; 93 two | f1 94-----+---- 95 | a 96 | A 97 | 1 98 | 2 99 | 3 100 | c 101(6 rows) 102 103DROP TABLE CHAR_TBL; 104-- 105-- Now test longer arrays of char 106-- 107CREATE TABLE CHAR_TBL(f1 char(4)); 108INSERT INTO CHAR_TBL (f1) VALUES ('a'); 109INSERT INTO CHAR_TBL (f1) VALUES ('ab'); 110INSERT INTO CHAR_TBL (f1) VALUES ('abcd'); 111INSERT INTO CHAR_TBL (f1) VALUES ('abcde'); 112ERROR: value too long for type character(4) 113INSERT INTO CHAR_TBL (f1) VALUES ('abcd '); 114SELECT '' AS four, * FROM CHAR_TBL; 115 four | f1 116------+------ 117 | a 118 | ab 119 | abcd 120 | abcd 121(4 rows) 122 123