Функции для работы со строками
Для работы со строка в MySQL определен ряд встроенных функций:
CONCAT : объединяет строки. В качестве параметра принимает от 2-х и более строк, которые надо соединить:
При этом в функцию можно передавать не только непосредственно строки, но и числа, даты — они будут преобразовываться в строки и также объединяться.
CONCAT_WS : также объединяет строки, но в качестве первого параметра принимает разделитель, который будет соединять строки:
LENGTH : возвращает количество символов в строке. В качестве параметра в функцию передается строка, для которой надо найти длину:
LTRIM : удаляет начальные пробелы из строки. В качестве параметра принимает строку:
RTRIM : удаляет конечные пробелы из строки. В качестве параметра принимает строку:
TRIM : удаляет начальные и конечные пробелы из строки. В качестве параметра принимает строку:
С помощью дополнительного оператора можно задать где имеено удалить пробелы: BOTH (в начале и в конце), TRAILING (только в конце), LEADING (только в начале):
LOCATE(find, search [, start]) : возвращает позицию первого вхождения подстроки find в строку search. Дополнительный параметр start позволяет установить позицию в строке search, с которой начинается поиск подстроки find. Если подстрока search не найдена, то возвращается 0:
LEFT : вырезает с начала строки определенное количество символов. Первый параметр функции — строка, а второй — количество символов, которые надо вырезать сначала строки:
RIGHT : вырезает с конца строки определенное количество символов. Первый параметр функции — строка, а второй — количество символов, которые надо вырезать сначала строки:
SUBSTRING(str, start [, length]) : вырезает из строки str подстроку, начиная с позиции start. Третий необязательный параметр передает количество вырезаемых символов:
SUBSTRING_INDEX(str, delimiter, count) : вырезает из строки str подстроку. Параметр delimiter определяет разделитель внутри строки. А параметр count определяет, до какого вхождения разделителя надо вырезать подстроку. Если count положительный, то подстрока вырезается с начала, если count отрицательный, то с конца строки str:
REPLACE(search, find, replace) : заменяет в строке find подстроку search на подстроку replace. Первый параметр функции — строка, второй — подстрока, которую надо заменить, а третий — подстрока, на которую надо заменить:
INSERT(str, start, length, insert) : вставляет в строку str, заменяя length символов с позиции start подстрокой insert. Первый параметр функции — строка, второй — позиция, с которой надо заменить, третий — сколько символов с позиции start надо заменить вставляемой подстрокой, четвертый параметр — вставляемая подстрока:
REVERSE : переворачивает строку наоборот:
LOWER : переводит строку в нижний регистр:
UPPER : переводит строку в верхний регистр
SPACE : возвращает строку, которая содержит определенное количество пробелов
REPEATE(str, count) : возвращает строку, которая содержит определенное количество повторов подстроки str. Количество повторов задается через параметр count.
LPAD(str, length, pad) : добавляет слева от строки str некоторое количество символов, которые определены в параметре pad. Количество добавляемых символов вычисляется по формуле length — LENGTH(str) . Если параметр length меньше длины строки str, то эта строка усекается до length символов.
RPAD(str, length, pad) : добавляет справа от строки str некоторое количество символов, которые определены в параметре pad. Количество добавляемых символов вычисляется по формуле length — LENGTH(str) . Если параметр length меньше длины строки str, то эта строка усекается до length символов.
Например, возьмем таблицу:
И при извлечении данных применим строковые функции:
Для поиска подстроки в SQL существует функция LOCATE. Она позволяет найти подстроку в определённом поле таблицы, для того чтобы сделать что-то с записью, содержащей эту подстроку. Запрос с данной функцией может выглядеть так:
SELECT * FROM таблица WHERE LOCATE(подстрока, поле)
Для примера получим все записи из таблицы users , в которых поле inform содержит подстроку "скрипт" и выведем записи на экран:
Функцию LOCATE можно использовать не только для выборки но и для других запросов, в которых указываются условия.
Для более сложного поиска подстроки применяется ключевое слово LIKE. Оно позволяет написать шаблон, по которому производится поиск в определённом поле таблицы. Запрос выглядит приблизительно так:
SELECT * FROM таблица WHERE поле LIKE шаблон
В шаблоне кроме текта используются такие символы:
_ — один любой сммвол
% — любое количество символов
Коприрование материалов сайта возможно только с согласия администрации
Как с помощью Mysql сделать поиск по вхождению в строке?
Вот есть пример, надо найти по полю [STR] вхождение "A":
2 ответа 2
Не очень понятно представление таблицы, если N и STR — это столбцы таблицы, то достаточно, как указано в комментариях, воспользоваться оператором LIKE
Если же [0] [N]"TABL",[STR]"A,B,C" и [1] [N]"CATL",[STR]"B,C" это строки по которым осуществляется поиск, то лучше воспользоваться регулярными выражениями, т.е. оператором RLIKE
Извини, помог человек из комментариев, раз он не пишет то напишу я.