On Fri, Jul 23, 2010 at 6:17 PM, Alban Hertroys
<dal...@solfertje.student.utwente.nl> wrote:
>> I thought to do
>>
>> select * from coloursample where colour & 10 = 10;
>>
>> ...but that's not right, because it finds the third record is a match.
>
>
> What's not entirely clear to me is whether you only want to find colours that 
> have BOTH Yellow and Orange set and nothing else, or colours that have EITHER 
> Yellow and Orange set and nothing else.
>
> The first case has been answered by Stephen (use a straight 'equals'). The 
> other case is a bit more complicated.
>
> That 11 matches using "& 10" is because you filtered out all the other bits 
> in your comparison by anding them with '0', while they /are/ relevant: they 
> aren't allowed to be '1' after all. You probably need to look at the inverted 
> versions of these numbers to get what you need.
>
> My bit-foo is a bit rusty,

Hehe. Mine too, it would seem!

>but this looks like what you need (I used bit-strings for my own convenience):
>
> development=> select (~ '01010'::bit(5)) | '01010'::bit(5) = '11111'::bit(5);
>  ?column?
> ----------
>  t
> (1 row)
>
> development=> select (~ '01011'::bit(5)) | '01010'::bit(5) = '11111'::bit(5);
>  ?column?
> ----------
>  f
> (1 row)
>
> development=> select (~ '01110'::bit(5)) | '01010'::bit(5) = '11111'::bit(5);
>  ?column?
> ----------
>  f
> (1 row)
>
> development=> select (~ '11010'::bit(5)) | '01010'::bit(5) = '11111'::bit(5);
>  ?column?
> ----------
>  f
> (1 row)
>
> development=> select (~ '00010'::bit(5)) | '01010'::bit(5) = '11111'::bit(5);
>  ?column?
> ----------
>  t
> (1 row)
>
> development=> select (~ '01000'::bit(5)) | '01010'::bit(5) = '11111'::bit(5);
>  ?column?
> ----------
>  t
> (1 row)
>
>
> Alban Hertroys


Thanks Alban. Steve, too, has joined in again above: the bit-wise OR,
together with an equality test on the stored value, would seem to be
what's called for.

Appreciate the contribution.

I think we can all go home now!!  :-)

Regards
HJR

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to