Re: operator does not exist
От | Dimitri Fontaine |
---|---|
Тема | Re: operator does not exist |
Дата | |
Msg-id | 87d3z0wu26.fsf@hi-media-techno.com обсуждение исходный текст |
Ответ на | operator does not exist (Julius Tuskenis <julius@nsoft.lt>) |
Ответы |
Re: operator does not exist
|
Список | pgsql-admin |
Julius Tuskenis <julius@nsoft.lt> writes: > select '1' = 1 results in true This is a undecorated literal, which PostgreSQL will cast as integer when it discovers that's what makes sense. > while select sum(msg_price) from messages where msg_itemid = 0 results in > error: > ERROR: operator does not exist: character varying = integer > LINE 1: select sum(msg_price) from messages where msg_itemid = 0 Here, msg_itemid is known to be a varchar, and 0 is a numeric literal, which is in the range of an integer, so the type is resolved as an integer. Now the = operator does not exist for varchar, integer. > I will add the operator ant then we'll fix the queries, but is the first > example ok? Should it not raise error ? Not as written. Try to decorate the literal to force PostgreSQL into considering it of the type you have in mind: SELECT text '1' = 1; Or even do a cast, this way: SELECT '1'::text = 1; Regards, -- dim
В списке pgsql-admin по дате отправления: