| From: | Thom Brown <thombrown(at)gmail(dot)com> |
|---|---|
| To: | "A(dot) Kretschmer" <andreas(dot)kretschmer(at)schollglas(dot)com> |
| Cc: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: Comparing bit in an integer field |
| Date: | 2009-11-16 14:25:24 |
| Message-ID: | bddc86150911160625u1f5f55b2hcc6bf8fc1d32a580@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
2009/11/16 A. Kretschmer <andreas(dot)kretschmer(at)schollglas(dot)com>:
> In response to Amitabh Kant :
>> Hello
>>
>> I need to compare the bit values of a integer field in my table. For example, I
>> have a table called "t1" with just one field "a1" having following values:
>>
>> a1
>> ==
>> 0
>> 12
>> 8
>> 0
>> 1
>> 10
>> 7
>> 19
>>
>> I am trying to fetch all records where the 3rd binary bit is 1, which from the
>> above example should be 12 (00001100) and 7 (00000111). If I convert the values
>> to binary and store it as string, I can easily compare them using substr, but
>> would rather like to retain the integer field. I have tried using the get_bit
>> function, but it seems my understanding of the function is not correct.
>
> test=# select * from t1;
> a1
> ----
> 0
> 12
> 8
> 0
> 1
> 10
> 7
> 19
> (8 rows)
>
> test=*# select a1 from t1 where (a1>>2)::bit = B'1';
> a1
> ----
> 12
> 7
> (2 rows)
>
Ah, bit-shifting. Told you there'd be a cleaner way ;)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2009-11-16 15:14:33 | Re: What is the correct way to extract values from an int8 array in SPI? |
| Previous Message | A. Kretschmer | 2009-11-16 14:23:25 | Re: Comparing bit in an integer field |