Can anyone explain why this is the case?

On 20-Nov-07, at 2:42 PM, Heikki Linnakangas wrote:

Cade Cairns wrote:
When casting a bit string constant using hexadecimal notation to a longer bit string, the result is padded with 0's on the right. This will result in
inconsistent/useless results:
test=# select x'ff'::integer;
int4 ------
 255
(1 row)
test=# select x'ff'::bit(16)::integer;
int4  -------
65280
(1 row)

It works like it should according to the manual:

http://www.postgresql.org/docs/8.1/interactive/datatype-bit.html

"Note: If one explicitly casts a bit-string value to bit(n), it will be truncated or zero-padded on the right to be exactly n bits, without raising an error. Similarly, if one explicitly casts a bit- string value to bit varying(n), it will be truncated on the right if it is more than n bits."

--
 Heikki Linnakangas
 EnterpriseDB   http://www.enterprisedb.com



---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to