Функции для работы со строками
Для работы со строка в MySQL определен ряд встроенных функций:
- CONCAT: объединяет строки. В качестве параметра принимает от 2-х и более строк, которые надо соединить:1
SELECTCONCAT('Tom',' ','Smith')-- Tom SmithПри этом в функцию можно передавать не только непосредственно строки, но и числа, даты — они будут преобразовываться в строки и также объединяться. - CONCAT_WS: также объединяет строки, но в качестве первого параметра принимает разделитель, который будет соединять строки:1
SELECTCONCAT_WS(' ','Tom','Smith','Age:', 34)-- Tom Smith Age: 34 - LENGTH: возвращает количество символов в строке. В качестве параметра в функцию передается строка, для которой надо найти длину:1
SELECTLENGTH('Tom Smith')-- 9 - LTRIM: удаляет начальные пробелы из строки. В качестве параметра принимает строку:1
SELECTLTRIM(' Apple') - RTRIM: удаляет конечные пробелы из строки. В качестве параметра принимает строку:1
SELECTRTRIM(' Apple ') - TRIM: удаляет начальные и конечные пробелы из строки. В качестве параметра принимает строку:1
SELECTTRIM(' Tom Smith ')С помощью дополнительного оператора можно задать где имеено удалить пробелы:BOTH(в начале и в конце),TRAILING(только в конце),LEADING(только в начале):1SELECTTRIM(BOTHFROM' Tom Smith ') - LOCATE(find, search [, start]): возвращает позицию первого вхождения подстроки find в строку search. Дополнительный параметр start позволяет установить позицию в строке search, с которой начинается поиск подстроки find. Если подстрока search не найдена, то возвращается 0:1234
SELECTLOCATE('om','Tom Smith');-- 2SELECTLOCATE('m','Tom Smith');-- 3SELECTLOCATE('m','Tom Smith', 4);-- 6SELECTLOCATE('mig','Tom Smith');-- 0 - LEFT: вырезает с начала строки определенное количество символов. Первый параметр функции — строка, а второй — количество символов, которые надо вырезать сначала строки:1
SELECTLEFT('Apple', 3)-- App - RIGHT: вырезает с конца строки определенное количество символов. Первый параметр функции — строка, а второй — количество символов, которые надо вырезать сначала строки:1
SELECTRIGHT('Apple', 3)-- ple - SUBSTRING(str, start [, length]): вырезает из строки str подстроку, начиная с позиции start. Третий необязательный параметр передает количество вырезаемых символов:12
SELECTSUBSTRING('Galaxy S8 Plus', 8),-- S8 Plus(SELECTSUBSTRING('Galaxy S8 Plus', 8, 2) );-- S8 - SUBSTRING_INDEX(str, delimiter, count): вырезает из строки str подстроку. Параметр delimiter определяет разделитель внутри строки. А параметр count определяет, до какого вхождения разделителя надо вырезать подстроку. Если count положительный, то подстрока вырезается с начала, если count отрицательный, то с конца строки str:123
SELECTSUBSTRING_INDEX('Galaxy S8 Plus',' ', 1),-- Galaxy(SELECTSUBSTRING_INDEX('Galaxy S8 Plus',' ', 2) ),-- Galaxy S8(SELECTSUBSTRING_INDEX('Galaxy S8 Plus',' ', -2) );-- S8 Plus - REPLACE(search, find, replace): заменяет в строке find подстроку search на подстроку replace. Первый параметр функции — строка, второй — подстрока, которую надо заменить, а третий — подстрока, на которую надо заменить:1
SELECTREPLACE('Galaxy S8 Plus','S8 Plus','Note 8')-- Galaxy Note 8 - INSERT(str, start, length, insert): вставляет в строку str, заменяя length символов с позиции start подстрокой insert. Первый параметр функции — строка, второй — позиция, с которой надо заменить, третий — сколько символов с позиции start надо заменить вставляемой подстрокой, четвертый параметр — вставляемая подстрока:1
SELECTINSERT('Galaxy S9', 8, 3,'Note 9');-- Galaxy Note 9 - REVERSE: переворачивает строку наоборот:1
SELECTREVERSE('123456789')-- 987654321 - LOWER: переводит строку в нижний регистр:1
SELECTLOWER('Apple')-- apple - UPPER: переводит строку в верхний регистр1
SELECTUPPER('Apple')-- APPLE - SPACE: возвращает строку, которая содержит определенное количество пробелов
- REPEATE(str, count): возвращает строку, которая содержит определенное количество повторов подстроки str. Количество повторов задается через параметр count.1
SELECTREPEAT('ab', 5);-- ababababab - LPAD(str, length, pad): добавляет слева от строки str некоторое количество символов, которые определены в параметре pad. Количество добавляемых символов вычисляется по формуле
length - LENGTH(str). Если параметр length меньше длины строки str, то эта строка усекается до length символов.1SELECTLPAD('Tom Smith', 13,'*');-- ****Tom Smith - RPAD(str, length, pad): добавляет справа от строки str некоторое количество символов, которые определены в параметре pad. Количество добавляемых символов вычисляется по формуле
length - LENGTH(str). Если параметр length меньше длины строки str, то эта строка усекается до length символов.1SELECTRPAD('Tom Smith', 13,'*');-- Tom Smith****
Например, возьмем таблицу:
| 1 2 3 4 5 6 7 8 | CREATE TABLE Products(Id INT AUTO_INCREMENT PRIMARY KEY,ProductName VARCHAR(30) NOT NULL,Manufacturer VARCHAR(20) NOT NULL,ProductCount INT DEFAULT 0,Price DECIMAL NOT NULL); |
И при извлечении данных применим строковые функции:
| 1 2 3 4 | SELECT UPPER(LEFT(Manufacturer,2)) AS Abbreviation,CONCAT(ProductName, ' - ', Manufacturer) AS FullProdNameFROM ProductsORDER BY Abbreviation |
