Вот обсуждение Ask Tom по этой теме. Дает ориентированный на Oracle взгляд на проблему.
Что касается хранилища, char (1) на самом деле является бит (без каламбура) более эффективным:
SQL> CREATE TABLE xx (c CHAR(1), n NUMBER);
Table created
SQL> insert into xx values('T', 1);
1 row inserted
SQL> select dump(c), dump(n) from xx;
DUMP(C) DUMP(N)
------------------- -------------
Typ=96 Len=1: 84 Typ=2 Len=2: 193,2