Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Битовая обработка данных (http://forum.oszone.net/showthread.php?t=95268)

pralev 02-12-2007 19:56 689069

Битовая обработка данных
 
Проблема в следующем:
В таблице БД имеется поле типа text фиксированной длины (57 символов). Очевидно, запись в этом поле будет занимать 57 байт, то есть 456 бит. Как средствами SQL проанализировать только конкрктные биты поля?
К примеру, как сделать запрос, который проверит на равенство единице, скажем, 101-й и 300-й бит поля? Возможно, как-то с помощью битовых опираций, но как?
Если у кого-нибудь будут какие-то мысли по этому поводу, помогите.
Заранее благодарен.

vadimiron 02-12-2007 20:29 689092

pralev,
начните здесь , особенно посмотрите там коментарий - вроде чтото похожее
(то есть, Вам скорей всего нужны функция IF, и в ней уже проверять есть ли бит на нужном месте (то есть оператор &))

kim-aa 03-12-2007 11:59 689439

Битовые операции, вобще-то, не являются стандартным свойством реляционных БД.
Т. е. к ним не применимы многие стандартные "фенечки", например индексирование.
При большом объеме данных это будет серьезный затык в производительности.
По-этому в больших БД, часто жертвуют размером ради скорости, т. е. выделяют под битовое поле минимально возможное атомарное значение, например байт. Или используют не один столбец со значением text (который кстати тоже не описан в реляционной алгебре),
а используют группу столбцов типа максимально-возможное целое (в вашем случае это будет 8 столбцов по 8 бит).
В таком случае, например проверка на наличие 1цы, скажем в 7 разряде будет проходить как
" > 127"

Или же если функциональная матрица сильно разрежена (используются минимум пар: входное значение - выходное значение), пытаются перенести вычисления из булевой алгебры, в операции со множествами.


Время: 12:16.

Время: 12:16.
© OSzone.net 2001-