I wrote:
> A simple, self-contained example derived from the OP:
>
> test=# create table t (c "char");
> CREATE TABLE
> test=# insert into t values ('a');
> INSERT 0 1
> test=# select case when c = 'a' then 'Hey' else c end from t;
> c
> ---
> H
> (1 row)
>
> test=# select case when c = 'a' then 'Hey'::text else c end from t;
> c
> -----
> Hey
> (1 row)
And I'm not even sure how I'd explain the rules to someone. (I guess
that's because I don't understand them, really, but the other way
sounds better....)
test=# drop table t;
DROP TABLE
test=# create table t (c varchar(2));
CREATE TABLE
test=# insert into t values ('a');
INSERT 0 1
test=# select case when c = 'a' then 'Hey' else c end from t;
c
-----
Hey
(1 row)
test=# select case when c = 'a' then 'Hey'::text else c end from t;
c
-----
Hey
(1 row)
-Kevin