Vika7
@Vika7
вебист

Цикл в запросе БД?

Отправляю запрос в БД MySQL в виде строки «10110010», 0 и 1 это мои чекбоксы вкл/выкл, поля в БД хранят 1 и 0, Вопрос: как обойтись без битовой маски и битовых операций в запросе? К примеру, разбить строку

String str = “10110010”
char[] chars = str.toCharArray();


затем циклом пройтись в запросе

SELECT * FROM table WHERE …

Это возможно? Как это сделать?
  • Вопрос задан
  • 320 просмотров
Пригласить эксперта
Ответы на вопрос 3
@awesomer
циклом по БД ходить не надо.
биты из битовой маски извлечь или установить - будет на много порядков быстрее, чем ответ на лишний запрос от СУБД получить.
а почему биты строковые?
с цифровыми работать намного удобнее по маскам.
Ответ написан
@eGenius18
хм... не оч понятно для чего это и для чего такие сложности? но предположу - что просто набор чекбоксов. тогда просто храним набор в бд в 1 поле 01010010100, считываем и преобразуем в массив примерно так:

"01010010100".split("").map(Number)

и далее расставляем чеки
Ответ написан
Комментировать
@forspamonly2
битовые операции (и операции с подстроками) по-человечески не индексируются.
по булевым полям индес тоже низкоселективный, но если галочек в конкретном запросе сильно меньше чем галочек всего, то польза будет.
так что лучше разложить флажки по отдельным полям.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект
22 нояб. 2024, в 21:44
50000 руб./за проект