Функция MySQL INSTR()
Используя функцию instr(), мы можем предоставить строку и подстроку. Функция определит, существует ли подстрока в исходной строке. Если подстрока существует, функция вернет позицию первого вхождения подстроки в исходной строке.
Если подстрока не существует в исходной строке, функция вернет 0.
Ниже демонстрируется синтаксис функции instr():
INSTR(исходная_строка, подстрока);
Функция принимает два основных параметра:
- src_string относится к исходной строке, в которой вы хотите выполнить поиск.
- Подстрока определяет подстроку, которую вы ищете.
Следует помнить, что функция instr() нечувствительна к регистру. Следовательно, функция будет находить совпадающие шаблоны только без учета регистра символов,
Для выполнения поиска с учетом регистра можно использовать другие инструменты, например бинарный оператор.
Пример использования функции
В следующих примерах показано, как мы можем использовать функцию instr() для поиска определенной подстроки.
SELECT INSTR('MySQL - отличная база данных', 'база данных') as pos;
Приведенный выше пример вернет начальную позицию строки «база данных» из исходной строки. В этом случае позиция строки базы данных равна 21, как показано в выходных данных ниже:
поз|---+
21|
Пример 2
Мы можем использовать функции lower() или upper для преобразования строки в нижний или верхний регистр. Это может помочь нам преодолеть регистрозависимость функции.
Пример:
SELECT INSTR(lower('MySQL — отличная база данных'), lower('DATABASE')) as pos;Результат:
поз|
---+
21|
Это вернет значение, аналогичное первому примеру, поскольку исходная строка и подстрока преобразуются в нижний регистр перед операцией поиска.
Пример 3
Мы также можем использовать функцию instr() со столбцом таблицы, как показано в синтаксисе ниже.
SELECT INSTR(имя_столбца, 'подстрока')ОТ имя_таблицы;
Пример:
СОЗДАТЬ ТАБЛИЧНЫЕ блоги (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
заголовок VARCHAR(255) НЕ NULL,
содержание ТЕКСТ НЕ ПУСТОЙ,
date_posted ДАТА НЕ НУЛЕВАЯ,
автор VARCHAR(255) НЕ NULL
);
Вставьте некоторые данные:
ВСТАВИТЬ В блоги (название, содержание, дата публикации, автор)
VALUES («Мой первый пост в блоге», «Это содержание моего первого поста в блоге», «2022-12-09», «Джейн Доу»);
ВСТАВИТЬ В блоги (название, содержание, дата публикации, автор)
VALUES («Мой второй пост в блоге», «Это содержание моего второго поста в блоге», «2022-12-10», «Джейн Доу»);
ВСТАВИТЬ В блоги (название, содержание, дата публикации, автор)
VALUES («Мой третий пост в блоге», «Это содержание моего третьего поста в блоге», «2022-12-11», «Джейн Доу»);
выберите * из блогов;
Результирующая таблица:
Мы можем использовать функцию instr(), чтобы получить позицию подстроки «блог» в столбце содержимого, как показано ниже:
выберите title, instr(content, 'post') из блогов;Результат:
Заключение
В этом руководстве вы узнали, как использовать функцию INSTR() в MySQL для поиска позиции подстроки в строке. Функция чувствительна к регистру. Следовательно, вам может понадобиться использовать такие функции, как нижний и верхний, чтобы преобразовать строки поиска в нужные вам случаи.