Mike Diehl <mdiehl@diehlnet.com> writes:
> For example, I'm trying to do this:
> insert into data
> select cast('666' as integer) as block_number, phone as phone_number, name
> from demo_q;
> When I run this query, I get:
> ERROR: column "block_number" is of type integer but expression is of type
> character varying
I don't get that ...
I wonder whether the problem is that you are expecting the "as" labels
in the SELECT to do something, like make the data go into the
correspondingly named columns of the target table. But they don't do
anything. This query is going to try to assign 666, phone, and name to
the first three columns of "data", in order. I'll bet it is actually
complaining about the second or third column, not the 666 at all.
If that's it, the syntax you are looking for is
insert into data (block_number, phone_number, name)
select cast('666' as integer), phone_number, name
from demo_q;
regards, tom lane