Обсуждение: Weird 'bit' type behaviour

Поиск
Список
Период
Сортировка

Weird 'bit' type behaviour

От
Christopher Kings-Lynne
Дата:
Is there any reason for this behaviour:

test=# select 1::bit; bit
----- 0
(1 row)

test=# select '1'::bit; bit
----- 1
(1 row)

Chris



Re: Weird 'bit' type behaviour

От
Tom Lane
Дата:
Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:
> Is there any reason for this behaviour:
> test=# select 1::bit;
>   bit
> -----
>   0
> (1 row)

This is actually "1::int4::bit(1)", and what you are getting is
the sign bit.  See previous discussions about int-to-bit conversion
and which part of the int we ought to take.

> What about these?

Again, it's a field-width issue.  These all default to bit(1) and
you're shifting out of the defined width.
        regards, tom lane