Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Data Bases > Pgsql General > now i'm really ...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 18 of 21 Topic 15458 of 17602
Post > Topic >>

now i'm really confused. insert/update does autocast, where sometimes.

by Daniel Schuchardt <daniel_schuchardt@[EMAIL PROTECTED] > May 6, 2008 at 11:31 AM

Daniel Schuchardt schrieb:
> Hey Group,
>
> i know what all will say but i need to recreate the = operator for 
> datatypes varchar and integer in PostgreSQL 8.3.
>
> Our Software Project has Millions of Lines and so it would be 
> difficult to check all queries and Datatypes. Also it works really 
> fine and we all know the risk of wrong auto casting.
>
> Anyone knows the Syntax?
>
> Thanks a lot for your great work.
>
>
> Daniel.

so it depends on ? if i need an explicit cast?

demo=# CREATE TABLE a (a VARCHAR, b VARCHAR);
CREATE TABLE
demo=# CREATE SEQUENCE test;
CREATE SEQUENCE
demo=# ALTER TABLE a ALTER COLUMN a SET DEFAULT nextval('test');
ALTER TABLE
demo=# INSERT INTO a (b) VALUES ('C');
INSERT 0 1
demo=# SELECT * FROM a;
 a | b
---+---
 1 | C
(1 row)

demo=# INSERT INTO a (b) VALUES (nextval('test'));
INSERT 0 1
demo=# INSERT INTO a (b) VALUES (5);
INSERT 0 1
demo=# SELECT * FROM a WHERE b=5;
ERROR:  operator does not exist: character varying = integer at character
24
HINT:  No operator matches the given name and argument type(s). You 
might need to add explicit type casts.
LINE 1: SELECT * FROM a WHERE b=5;
                               ^
demo=# SELECT * FROM a WHERE b='5';
 a | b
---+---
 4 | 5
(1 row)

demo=# UPDATE a SET a=nextval('test'), b=nextval('test');
UPDATE 3
demo=# UPDATE a SET b=nextval('test')+3;
UPDATE 3
demo=# UPDATE a SET b=nextval('test')+3||'~1';
UPDATE 3
demo=# SELECT * FROM a;
 a |  b
---+------
 5 | 20~1
 6 | 21~1
 7 | 22~1
(3 rows)

demo=# UPDATE a SET b=3||'~1';
UPDATE 3
demo=# SELECT * FROM a;
 a |  b
---+-----
 5 | 3~1
 6 | 3~1
 7 | 3~1
(3 rows)

demo=# SELECT * FROM a WHERE b=3||'~1';
 a |  b
---+-----
 5 | 3~1
 6 | 3~1
 7 | 3~1
(3 rows)

demo=# SELECT * FROM a WHERE b LIKE 3||'%';
 a |  b
---+-----
 5 | 3~1
 6 | 3~1
 7 | 3~1
(3 rows)

demo=# SELECT * FROM a WHERE b LIKE 3;
ERROR:  operator does not exist: character varying ~~ integer at 
character 25
HINT:  No operator matches the given name and argument type(s). You 
might need to add explicit type casts.
LINE 1: SELECT * FROM a WHERE b LIKE 3;
                                ^
demo=# ALTER TABLE a ADD COLUMN c INTEGER;
ALTER TABLE
demo=# UPDATE a SET a=1, c=nextval('test');
UPDATE 3
demo=# SELECT * FROM a WHERE c=1;
 a | b | c
---+---+---
(0 rows)

demo=# SELECT * FROM a WHERE c='1';
 a | b | c
---+---+---
(0 rows)

demo=# SELECT * FROM a WHERE c=a;
ERROR:  operator does not exist: integer = character varying at character
24
HINT:  No operator matches the given name and argument type(s). You 
might need to add explicit type casts.
LINE 1: SELECT * FROM a WHERE c=a;
                               ^

demo=# SELECT * FROM a WHERE a=1;
ERROR:  operator does not exist: character varying = integer at character
24
HINT:  No operator matches the given name and argument type(s). You 
might need t
o add explicit type casts.
LINE 1: SELECT * FROM a WHERE a=1;
                               ^
demo=# SELECT * FROM a WHERE a='1';
 a |  b  | c
---+-----+----
 1 | 3~1 | 23
 1 | 3~1 | 24
 1 | 3~1 | 25
(3 rows)


demo=# CREATE OR REPLACE FUNCTION test() RETURNS VOID AS $$ BEGIN RAISE 
EXCEPTION '%', 1||'B'||current_date; RETURN; END$$LANGUAGE plpgsql;
CREATE FUNCTION
demo=# SELECT test();
ERROR:  1B2008-05-06
 




 21 Posts in Topic:
operator varchar = integer
Daniel Schuchardt <dan  2008-05-05 11:18:37 
Re: operator varchar = integer
Daniel Schuchardt <dan  2008-05-05 12:55:25 
Re: operator varchar = integer
laurenz.albe@[EMAIL PROTE  2008-05-05 14:44:02 
Re: operator varchar = integer
david@[EMAIL PROTECTED]   2008-05-05 07:33:30 
Re: operator varchar = integer
Daniel Schuchardt <dan  2008-05-05 17:26:40 
Re: operator varchar = integer
david@[EMAIL PROTECTED]   2008-05-05 08:52:54 
Re: operator varchar = integer
Daniel Schuchardt <dan  2008-05-05 18:53:20 
Re: operator varchar = integer
tgl@[EMAIL PROTECTED] (T  2008-05-05 13:36:01 
Re: operator varchar = integer
Daniel Schuchardt <dan  2008-05-05 21:04:41 
Re: operator varchar = integer
Daniel Schuchardt <dan  2008-05-05 18:32:37 
operator is not unique: integer || integer
Daniel Schuchardt <dan  2008-05-05 18:43:37 
Re: operator is not unique: integer || integer
Daniel Schuchardt <dan  2008-05-05 20:54:07 
Re: operator is not unique: integer || integer
daniel_schuchardt@[EMAIL   2008-05-05 21:36:51 
Re: operator is not unique: integer || integer
kgore4@[EMAIL PROTECTED]   2008-05-06 10:05:18 
Re: operator is not unique: integer || integer
Daniel Schuchardt <dan  2008-05-06 10:08:06 
Re: operator is not unique: integer || integer
dalroi@[EMAIL PROTECTED]   2008-05-06 08:36:46 
Re: operator is not unique: integer || integer
Daniel Schuchardt <dan  2008-05-06 10:33:37 
now i'm really confused. insert/update does autocast, where some
Daniel Schuchardt <dan  2008-05-06 11:31:55 
Re: now i'm really confused. insert/update does autocast, where
Daniel Schuchardt <dan  2008-05-06 11:56:17 
Re: now i'm really confused. insert/update does autocast, where
kleptog@[EMAIL PROTECTED]  2008-05-06 13:16:30 
Re: now i'm really confused. insert/update does autocast, where
peter_e@[EMAIL PROTECTED]  2008-05-08 17:26:17 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Mon Dec 1 19:56:22 CST 2008.