SQLite Как выбрать записи, текстовое поле которых содержит подстроку, регистронезависимо?

Ссылка скопирована
1 ответ

База данных 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 - как напишешь регулярку, так и будет.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

Для выборки записей из базы данных SQLite, текстовое поле которых содержит определенную подстроку, независимо от регистра, можно использовать функцию LIKE с оператором ILIKE.

Пример запроса:

SELECT * FROM table_name WHERE column_name ILIKE '%substring%';

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, содержащих определенную подстроку, независимо от регистра. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно