2016-09-29 2 views
0

Я создал таблицу SQLite для моей коллекции DVD. У меня есть поле «Жанр» со следующими значениями: Приключения, Анимация, Биография, Рождество, Комедия, Преступление, ..., Западная. Поле «Жанр» имеет тип int, где каждый бит целого представляет один из 24 жанров. Например, если бит 4 установлен, DVD-комедия. Я хочу иметь возможность получить подмножество таблицы в зависимости от жанра. Например, я пробовал это:бит операции?

SELECT * FROM AV WHERE GENRE & 1 <<4> 0 ORDER BY Title 

для извлечения всех комедий. Как ни странно, оператор SQL выполнен нормально, но не с ожидаемыми результатами.

Я знаю, что могу просто сохранить жанры как VarChar, но я хотел бы заставить его работать, сохранив жанры в виде битов в целое число.

+0

Зачем вам это делать ...? Почему бы просто не сказать, что приключенческие фильмы «1», а «Анимация» - «2» и т. Д.? Похоже, вы просто пытаетесь сделать что-то необычное, как вы храните его ради того, чтобы делать что-то необычное, но это просто звучит как головная боль для хранения/запроса. – Siyual

+3

Переходите к нормальной модели данных :-) Эти трюки в 99% случаев не нужны. –

+1

Я ценю тот факт, что вы пытаетесь играть с битовыми флагами, но можете ли вы хотя бы опубликовать некоторые данные образца? Как выглядят эти таблицы и какие результаты вы получаете? – WillardSolutions

ответ

0

Мой плохой. Оператор SQL работает корректно. Я добавил два жанра, а затем отсортировал жанры в алфавитном порядке, которые изменили расположение бит. Извините за путаницу. Earl Staley

Смежные вопросы