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 | A 67 | 1 68 | 2 69 | 3 70 | 71(5 rows) 72 73SELECT '' AS six, c.* 74 FROM CHAR_TBL c 75 WHERE c.f1 <= 'a'; 76 six | f1 77-----+---- 78 | a 79 | A 80 | 1 81 | 2 82 | 3 83 | 84(6 rows) 85 86SELECT '' AS one, c.* 87 FROM CHAR_TBL c 88 WHERE c.f1 > 'a'; 89 one | f1 90-----+---- 91 | c 92(1 row) 93 94SELECT '' AS two, c.* 95 FROM CHAR_TBL c 96 WHERE c.f1 >= 'a'; 97 two | f1 98-----+---- 99 | a 100 | c 101(2 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