Thread: Casting on the limit
Hi, In 8.2.5: This does not work (out of range): select -32768::int2 But this works: select cast(-32768 as int2); What is the difference between the two syntax in the background? I always thought they are the same. Best regards, Otto
Sorry, version is 8.2.4 2008/1/21, Ottó Havasvölgyi <havasvolgyi.otto@gmail.com>: > Hi, > > In 8.2.5: > > This does not work (out of range): > select -32768::int2 > > But this works: > select cast(-32768 as int2); > > What is the difference between the two syntax in the background? I > always thought they are the same. > > Best regards, > Otto >
But 8.2.6 works the same. I have just upgraded. 2008/1/21, Ottó Havasvölgyi <havasvolgyi.otto@gmail.com>: > Sorry, version is 8.2.4 > > 2008/1/21, Ottó Havasvölgyi <havasvolgyi.otto@gmail.com>: > > Hi, > > > > In 8.2.5: > > > > This does not work (out of range): > > select -32768::int2 > > > > But this works: > > select cast(-32768 as int2); > > > > What is the difference between the two syntax in the background? I > > always thought they are the same. > > > > Best regards, > > Otto > > >
Ottó Havasvölgyi wrote: > In 8.2.5: > > This does not work (out of range): > select -32768::int2 > > But this works: > select cast(-32768 as int2); > > What is the difference between the two syntax in the background? I > always thought they are the same. "select -32768::int2" is equal to "select -(32768::int2)", and 32768 doesn't fit in an int2. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com
Thank you:) I didn't even thought of this case. I am a bit surprised that "::" has higher precedence than negation, but maybe it has some cause. Sorry for sending it to this list. Best regards, Otto 2008/1/21, Heikki Linnakangas <heikki@enterprisedb.com>: > Ottó Havasvölgyi wrote: > > In 8.2.5: > > > > This does not work (out of range): > > select -32768::int2 > > > > But this works: > > select cast(-32768 as int2); > > > > What is the difference between the two syntax in the background? I > > always thought they are the same. > > "select -32768::int2" is equal to "select -(32768::int2)", and 32768 > doesn't fit in an int2. > > -- > Heikki Linnakangas > EnterpriseDB http://www.enterprisedb.com >