Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Поиск по шаблону — довольно мощное средство в любом языке программирования, но поиск по шаблону можно еще и выполнять средствами СУБД. Любая реляционная СУБД поддерживает работу SQL оператора LIKE, который осуществляет сравнение строк в базе данных или как еще говорят поиск по шаблону в базе данных. Нужно отметить, что оператор LIKE становится мощным средством поиска строк в базе данных в том случае, когда система управления базами данных поддерживает регулярные выражения, к сожалению, SQLite3 не поддерживает регулярные выражения, из-за чего оператор LIKE и его шаблоны выглядят неполноценно.

Сравнение строк в базах данных: SQL оператор LIKE и SELECT в SQLite. Поиск по шаблону в базах данных при помощи оператора LIKE

Сравнение строк в базах данных: SQL оператор LIKE и SELECT в SQLite. Поиск по шаблону в базах данных при помощи оператора LIKE

В этой записи мы поговорим о том, как работает оператор LIKE и командах SELECT в базах данных под управлением SQLite. Также мы рассмотрим пример SQL запроса, использующего команду SELECT и оператор LIKE и в завершении публикации мы рассмотрим то, с какими SQL командами может работать оператор LIKE помимо SELECT.

Поиск по шаблону в базах данных SQLite3: как работают SQL оператор LIKE и SELECT

Продолжим усложнять простую выборку данных из базы данных SQLite3 при помощи логических операторов, ранее мы рассмотрели связку AND, OR и SELECT, а также комбинацию SELECT и BETWEEN. Теперь давайте сделаем серьезный SQL запрос SELECT с использованием SQL оператора LIKE. Оператор LIKE и SELECT чаще всего используются, когда в программе (на сайте, в мобильном приложении или где-либо еще) нужно реализовать простейшую форму поиска.

Так что LIKE и SELECT можно считать простейшим поисковым алгоритмом, который вы можете реализовать на своём сайте. Оператор LIKE бинарный. В левой части LIKE указывается столбец, по которому будет осуществлен поиск, а в правой части указывается шаблон, по которому будет сделан поиск.

В SQLite3 есть два способа задать шаблон поиска оператору LIKE и затем найти значение в таблице командой SELECT:

  1. Знак процента «%». Процент означает любые символы и любое их количество, например: шаблон %ова позволяет найти все слова, заканчивающиеся на ова. Или шаблон %ма% позволит найти все слова, в которых есть слог «ма».
  2. Знак нижнего подчеркивания «_». Нижнее подчеркивание означает один любой символ. Например, шаблон поро_ позволит найти слова «порок», «порог» и другие слова, начинающиеся на «поро» и состоящие из 5 букв. Или шаблон з_ма позволит найти слова «зима», «зёма» и другие по аналогии.

При составлении шаблонов поиска никто не запрещает использовать описанные выше конструкции несколько раз, например з_ма% или %м__ра% . Обратите внимание: чтобы успешно делать сравнение строк при выборке данных из базы данных вы должны понимать, как SQLite3 сравнивает значение и что такое аффинированный тип данных, иначе результаты работы SELECT и LIKE иногда будут для вас непредсказуемы, особенно, если учесть, что SQLite – это СУБД с динамической типизацией данных.

Так же нужно учесть, что сравнение строк или поиск по шаблону в базах данных под управлением SQLite3 мы можем реализовать только с использованием клаузулы WHERE, когда мы составляем условие выборки данных или с использованием HAVING, когда мы делаем дополнительную фильтрацию данных после группировки данных (GROUP BY).

В общем, вы уже, наверное, поняли, что оператор LIKE реализует поиск по шаблону и используется он для сравнения строк с заданными шаблонами.

Примеры поиска по шаблону в базах данных SQLite3: примеры сравнения строк при помощи SQL оператора LIKE и SELECT

Слова словами, а примеры никто не отменял, давайте реализуем поиск по шаблону в базе данных под управлением SQLite3. И посмотрим, как SQLite сравнивает строки, когда мы используем оператор LIKE и команду SELECT. Для начала создадим таблицу в базе данных при помощи команды CREATE:

[php]

CREATE TABLE table1 (

id INTEGER PRIMARY KEY,

name TEXT NOT NULL,

pro TEXT NOT NULL,

sex TEXT NOT NULL,

sal REAL CHECK (sal > 15000)

);

[/php]

Таблица создана, у таблицы четыре столбца с ограничениями уровня столбца и ограничением уровня таблицы. У таблицы есть внутренний индекс ROWID, который сгенерировала SQLite и есть индекс, который создали мы при помощи ограничения первичного ключа PRIMARY KEY. В данном случае значения этих индексов совпадают. Все это нужно для обеспечения целостности данных в базе данных.

А теперь добавим строки в таблицу, для этого есть команда INSERT INTO:

[php]

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Пупкин Матвей’, 'Дантист', ‘м’, 55000.00);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Cумкин Денис’, 'Юрист', ‘м’, 35040.90);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Иванов Иван’, 'Младший юрист', ‘м’, 16000.00);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Маркова Ирина’, 'Бухгалтер', ‘ж’, 31200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Петрова Алина’, 'Менеджер продаж', ‘ж’, 21200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Михайлова Любовь’, 'Секретарь', ‘ж’, 16200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Сидорова Инна’, 'Руководитель отдела обслуживания', ‘ж’, 66200.10);

INSERT INTO table1 (name, pro, sex, sal)

VALUES (‘Михайлова Любовь’, 'Документооборотчик', ‘ж’, 21200.10);

[/php]

Давайте реализуем поиск по шаблону в базе данных SQLite, воспользовавшись оператором LIKE и командой SELECT:

[php]

SELECT * FROM table1

WHERE name LIKE '%ин%';

1|Пупкин Матвей|Дантист|м|55000.0

2|Cумкин Денис|Юрист|м|35040.9

4|Маркова Ирина|Бухгалтер|ж|31200.1

5|Петрова Алина|Менеджер продаж|ж|21200.1

[/php]

Результат сравнения строк вы можете увидеть выше, в данном случае оператор LIKE позволил нам найти все строки, где есть вхождение «…ин…». Поиск по шаблону в SQLite – не самая мощная функция, так как SQLite не поддерживает регулярных выражений.

Мы разобрались с тем, как работает оператор LIKE и команда SELECT в базах данных SQLite, теперь вы сможете самостоятельно осуществлять сравнение строк во время выборки данных и делать поиск по шаблону из базы данных.

Использование SQL оператора LIKE с другими командами библиотеки SQLite3

Вы можете использовать SQL оператор LIKE не только вместе с SELECT, но и при составление других SQL запросов к базе данных под управлением SQLite3. Мы не берем в расчет команды управления транзакциями и не берем в расчет команды определения доступа к данным по известным причинам.

Оператор LIKE и команды определения данных в базах данных SQLite:

  1. Создавать таблицы мы можем на основе подзапросов SELECT с использованием ключевого слова AS, поэтому можно сказать, что команда CREATE допускает использование оператора LIKE.
  2. Удалять таблицы из базы данных мы можем командой DROP, но мы не можем использовать оператор LIKE для удаления таблиц.
  3. Модифицировать таблицы в базе данных мы можем командой ALTER, но команда ALTER работает на уровне объектов базы данных, а оператор LIKE работает со строками, поэтому мы не можем использовать LIKE и ALTER в базах данных SQLite

SQL оператор LIKE и команды манипуляции данными в базах данных SQLite3:

  1. Добавлять данные в таблицы базы данных мы можем при помощи команды INSERT INTO на основе подзапроса SELECT. Команда SELECT предполагает использование оператора
  2. Удалять строки из таблицы базы данных мы можем при помощи команды DELETE. Для этой операции мы можем использовать условие WHERE и можем определять строки, которые нужно удалить при помощи поиска подстроки.
  3. Изменять значения в таблицах базы данных нам позволяет команда UPDATE, для изменения значений мы можем воспользоваться оператором LIKE, чтобы точно определить строку, в которую хотим внести модификацию.

Итак, мы разобрались с оператором LIKE и командой SELECT, теперь вы спокойно можете осуществлять поиск по шаблону в своих базах данных под управлением SQLite. Помните, что LIKE сравнивает строки с шаблонами и помните про правила составления шаблонов в базах данных SQLite, тогда у вас не возникнет трудностей с использованием SELECT и LIKE.

Возможно, эти записи вам покажутся интересными


Выберете удобный для себя способ, чтобы оставить комментарий

Leave a Comment

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

Loading Disqus Comments ...