SQLite Как выбрать записи, текстовое поле которых содержит подстроку, регистронезависимо?
База данных SQLite. Есть очень большая таблица, > 200 гигабайт. Как выполнить выбор всех записей, текстовое поле которых, независимо от регистра, содержит указанную подстроку? Например:
+-----------+-------------------------------+ | key | value | +-----------+-------------------------------+ | 1001 | LoRem ipsum doloR sit amet, | | 1005 | consectetur adipiscing elit, | | 1021 | sed do eIUSMod tEMPOr | | 1222 | incididunt ut labORe et | +-----------+-------------------------------+ SELECT ..... 'or' +-----------+-------------------------------+ | key | value | +-----------+-------------------------------+ | 1001 | LoRem ipsum doloR sit amet, | | 1021 | sed do eIUSMod tEMPOr | | 1222 | incididunt ut labORe et | +-----------+-------------------------------+ SELECT ... ' ET' +-----------+-------------------------------+ | key | value | +-----------+-------------------------------+ | 1222 | incididunt ut labORe et | +-----------+-------------------------------+ |
+-----------+-------------------------------+ | key | value | +-----------+-------------------------------+ | 1001 | LoRem ipsum doloR sit amet, | | 1005 | consectetur adipiscing elit, | | 1021 | sed do eIUSMod tEMPOr | | 1222 | incididunt ut labORe et | +-----------+-------------------------------+ SELECT ..... 'or' +-----------+-------------------------------+ | key | value | +-----------+-------------------------------+ | 1001 | LoRem ipsum doloR sit amet, | | 1021 | sed do eIUSMod tEMPOr | | 1222 | incididunt ut labORe et | +-----------+-------------------------------+ SELECT ... ' ET' +-----------+-------------------------------+ | key | value | +-----------+-------------------------------+ | 1222 | incididunt ut labORe et | +-----------+-------------------------------+
UPD. Спасибо огромное за помощь, Akina, mayton2019, pantsarny, вы - лучшие! Использованный мной запрос выглядел так:
SELECT key, value FROM core WHERE UPPER(value) LIKE '%TEXT%'; |
SELECT key, value FROM core WHERE UPPER(value) LIKE '%TEXT%';
Дополнительно:
where … collate nocase
- А like регистронезависимый
Если это одноразовая задача то поищи UPPER(value) LIKE '% ET%'
Если искать надо будет много - то почитай про
CREATE VIRTUAL TABLE .............. USING FTS5 ........ |
CREATE VIRTUAL TABLE .............. USING FTS5 ........
LIKE регистронезависим.
GLOB регистрозависим.
REGEXP - как напишешь регулярку, так и будет.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для выборки записей из базы данных SQLite, текстовое поле которых содержит определенную подстроку, независимо от регистра, можно использовать функцию LIKE с оператором ILIKE.
Пример запроса:
SELECT * FROM table_name WHERE column_name ILIKE '%substring%';
В данном запросе table_name - название таблицы, column_name - название столбца, в котором нужно искать подстроку, и 'substring' - искомая подстрока. Знак % используется для указания любых символов до и после подстроки.
ILIKE - это оператор, который позволяет сравнивать строки без учета регистра символов. Таким образом, при выполнении данного запроса будут выбраны все записи, где значение в столбце column_name содержит подстроку 'substring', независимо от регистра символов.
Не забудьте заменить table_name и column_name на соответствующие названия вашей таблицы и столбца. Также обратите внимание, что ILIKE работает только в SQLite версии 3.25.0 и выше.
Надеюсь, этот ответ поможет вам решить вашу проблему с выборкой записей из базы данных SQLite, содержащих определенную подстроку, независимо от регистра. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.