On 5/30/23 06:45, Marc Millas wrote:
Hi, I always have had difficulties to understand syntax. So... If I have: create table t1 (t text); create table t2 (a text, b text, c test, d numeric);
Is c supposed to be text? Or are you indeed referring to some unspecified type?
insert into t1('azerty'); INSERT 0 1 fine !
Not with that syntax: insert into t1('azerty'); ERROR: syntax error at or near "'azerty'" LINE 1: insert into t1('azerty'); insert into t1 values('azerty'); INSERT 0 1
so, now, if I write: Select distinct test1.t, 'abc' as b, NULL as c, NULL as d From t1 test1; t | b | c | d --------+-----+---+--- azerty | abc | | (1 row) ok.
Yes
and , now, if I want to insert that: Insert into t2 (a, b, c, d) Select distinct test1.t, 'abc' as b, NULL as c, NULL as d From t1 test1; I get: ERROR: column "d" is of type numeric but expression is of type text LINE 2: Select distinct test1.t, 'abc' as b, NULL as c, NULL as d HINT: You will need to rewrite or cast the expression. Can someone give a short SQL syntax hint ?
The hint is that though NULL is unknown it can have a type. To get this to work I first did: create table t2 (a text, b text, c text, d numeric); to have c be text for simplicity sake. Then I did: Insert into t2 (a, b, c, d) Select distinct test1.t, 'abc' as b, NULL::test, NULL::numeric From t1 test1; which results in: select * from t2; a | b | c | d --------+-----+------+------ azerty | abc | NULL | NULL
thanks, Marc MILLAS Senior Architect +33607850334 www.mokadb.com <http://www.mokadb.com>
-- Adrian Klaver adrian.klaver@xxxxxxxxxxx