Re: bitwise storage and operations

Поиск
Список
Период
Сортировка
От Brian Dunavant
Тема Re: bitwise storage and operations
Дата
Msg-id CAJTy2ekapHLmwLjRamn_2uveeHh_VTXr6tzkUruooy_8MoriqA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: bitwise storage and operations  ("David G. Johnston" <david.g.johnston@gmail.com>)
Ответы Re: bitwise storage and operations  (Jonathan Vanasco <postgres@2xlp.com>)
Список pgsql-general
If it's in integer columns, bitwise logic works just like you would
expect it to as well.
https://www.postgresql.org/docs/current/static/functions-math.html

db=# select 'foo' where (9 & 1) > 0;
 ?column?
----------
 foo
(1 row)

db=# select 'foo' where (9 & 2) > 0;
 ?column?
----------
(0 rows)

Just bit-wise AND them and compare if the result is > 0.  If you use
the bitshift operator (<<) make sure you use parens to force ordering.
This is important.

On Mon, Sep 26, 2016 at 7:34 PM, David G. Johnston
<david.g.johnston@gmail.com> wrote:
> Please include the list in all replies.
>
> On Mon, Sep 26, 2016 at 4:14 PM, Jonathan Vanasco <postgres@2xlp.com> wrote:
>>
>>
>> On Sep 26, 2016, at 5:04 PM, David G. Johnston wrote:
>>
>> On Mon, Sep 26, 2016 at 1:44 PM, Jonathan Vanasco <postgres@2xlp.com>
>> wrote:
>>>
>>> The documentation doesn't have any examples for SELECT for the bitwise
>>> operators,
>>
>>
>> That shows a simple computation.  One can "SELECT" any computation and get
>> a value.
>>
>> It doesn't show a bitwise operator being used against an INT or BIT
>> column, as I further elaborated.
>
>
> I assumed a certain level of familiarity with databases and provided enough
> info to answer your main question: "what are the available bit string
> operators?".  That you can apply these operator to either constants or
> columns was knowledge I took for granted.
>
>>
>> From what I can tell so far, i need to extract and compare a substring for
>> the (reverse) index of the particular bit I want to filter on.
>
>
> B'1001' is typed bit(4)...
>
> The only requirement with a WHERE clause is that the computation must result
> in a boolean.  My example SELECT computation does just that.  It uses
> "varbit" for convenience but INT can be CAST() to BIT and the operators
> themselves should operate on any of the BIT variants.
>
> What you want is the "bit-wise AND" operator and the equality operator, both
> of which you were shown.
>
> I'd suggest you put forth your own example, filling in pseudo-code where
> needed, if you wish for more specific advice.
>
> David J.
>


В списке pgsql-general по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: lost synchronization with server: got message type "Z"
Следующее
От: Israel Brewster
Дата:
Сообщение: Determining server load