Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: поле как набор флагов  (Прочитано 11514 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« : 26-08-2005 04:45 » 

как сделать так, чтобы , скажем, SMALLINT использовать как 16 битовых флагов, причём в запросе можно было указать, какие флаги должны бать установлены /сброшены в выбранных записях?

например - выбрать все записи, где у поля field установлен 3 бит
Записан

Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 26-08-2005 05:24 » 

Синтаксис зависит от СУБД. Например для MySQL:
SELECT * FROM t WHERE (x & 4)<>0
Здесь & - оператор побитового И (bitwise and) и 4 это двоичное 100 - т.е. установлен 3-й бит.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 26-08-2005 07:01 » 

& не катит ...
Записан

Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 26-08-2005 07:09 » 

Какая СУБД?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 26-08-2005 08:10 » new

база *.fdb

подключаюсь и работаю через Firebird1.5 , драйвер - OdbcJdbc.dll
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 26-08-2005 10:32 » 

UDF bin_or, bin_and

SELECT * FROM t WHERE bin_and(t.f, 4)=4 // или bin_and(t.f, 4)<>0

Кажется так.
« Последнее редактирование: 26-08-2005 10:57 от Oldy » Записан

С уважением, Oldy.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 26-08-2005 10:57 » 

Олди, не, не катит:

select * from objects where bin_and(objects.nomer,1)=1

выдаётся ошибка:

An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
BIN_AND.
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 26-08-2005 11:00 » 

bin_and  для начала надо подключить к базе.

DECLARE EXTERNAL FUNCTION bin_and
   INTEGER, INTEGER
   RETURNS INTEGER BY VALUE
   ENTRY_POINT 'IB_UDF_bin_and' MODULE_NAME 'ib_udf';

DECLARE EXTERNAL FUNCTION bin_or
   INTEGER, INTEGER
   RETURNS INTEGER BY VALUE
   ENTRY_POINT 'IB_UDF_bin_or' MODULE_NAME 'ib_udf';

« Последнее редактирование: 20-12-2007 20:33 от Алексей1153++ » Записан

С уважением, Oldy.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 26-08-2005 11:29 » 

а где это надо делать?

командой SQL ? (имеется в виду из экзешника)
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 26-08-2005 18:18 » 

Это нужно сделать один единственный раз каким нибудь инструментом администратора, например isql.exe поставляемом  вмести с сервером (\Firebird\Bin\).
Записан

С уважением, Oldy.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines