> > This does not function any more under PG 8.3-beta1: > > select '5'::varchar = 5; > ERROR: operator does not exist: character varying = integer > > select '5'::char = 5; > ERROR: operator does not exist: character = integer
you cannot compare any character type and numeric type. If you wont to do, you have to cast to text or use function to_char or to_numeric. > > > Note that this still works: > select '5' = 5; > It is integer = integer. Value in apostrophes doesn't mean 100% char or varchar in Postgres. Pg detects unknown type (in apostrophes) accordance with know type (integer) try: postgres=# select '5.0'=5; ERROR: invalid input syntax for integer: "5a" postgres=# select '5.0'=5; ERROR: invalid input syntax for integer: "5.0" postgres=# select '5.0'=5.0; ?column? ---------- t (1 row) > ---------------------------(end of broadcast)--------------------------- > TIP 3: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faq > ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match