Эта группа функций позволяет манипулировать текстом. Строковых функций много, мы рассмотрим наиболее употребительные.
CONCAT(str1,str2...) Возвращает строку, созданную путем объединения аргументов (аргументы указываются
в скобках - str1,str2...). Например, в нашей таблице Поставщики (vendors) есть столбец Город (city) и столбец Адрес (address).
Предположим, мы хотим, чтобы в результирующей таблице Адрес и Город указывались в одном столбце, т.е. мы хотим
объединить данные из двух столбцов в один. Для этого мы будем использовать строковую функцию CONCAT(), а в качестве
аргументов укажем названия объединяемых столбцов - city и address:
SELECT CONCAT(city, address) FROM vendors;
Обратите внимание, объединение произошло без разделения, что не очень читабельно. Давайте подправим наш запрос, чтобы
между объединяемыми столбцами был пробел:
SELECT CONCAT(city, ' ', address) FROM vendors;
Как видите, пробел считается тоже аргументом и указывается через запятую. Если объединяемых столбцов было бы больше, то
указывать каждый раз пробелы было бы нерационально. В этом случае можно было бы использовать строковую функцию
CONCAT_WS(разделитель, str1,str2...), которая помещает разделитель между объединяемыми строками
(разделитель указывается, как первый аргумент). Наш запрос тогда будет выглядеть так:
SELECT CONCAT_WS(' ', city, address) FROM vendors;
Результат внешне не изменился, но если бы мы объединяли 3 или 4 столбца, то код значительно бы сократился.
INSERT(str, pos, len, new_str) Возвращает строку str, в которой подстрока, начинающаяся
с позиции pos и имеющая длину len символов, заменена подстрокой new_str. Предположим, мы решили в столбце Адрес (address)
не отображать первые 3 символа (сокращения ул., пр., и т.д.), тогда мы заменим их на пробелы:
SELECT INSERT(address, 1, 3, ' ') FROM vendors;
То есть три символа, начиная с первого, заменены тремя пробелами.
LPAD(str, len, dop_str) Возвращает строку str, дополненную слева строкой dop_str до длины len.
Предположим, мы хотим, чтобы при выводе городов поставщиков они располагались бы справа, а пустое пространство заполнялось бы
точками:
SELECT LPAD(city, 15, '.') FROM vendors;
Обратите внимание, значение len ограничивает количество выводимых символов, т.е. если название города будет длиннее 15 символов,
то оно будет обрезано.
RPAD(str, len, dop_str) Возвращает строку str, дополненную справа строкой dop_str до длины len.
Предположим, мы хотим, чтобы при выводе городов поставщиков они располагались бы слева, а пустое пространство заполнялось бы
точками:
SELECT RPAD(city, 15, '.') FROM vendors;
Обратите внимание, значение len ограничивает количество выводимых символов, т.е. если название города будет длиннее 15 символов,
то оно будет обрезано.
LTRIM(str) Возвращает строку str, в которой удалены все начальные пробелы. Эта строковая
функция удобна для корректного отображения информации в случаях, когда при вводе данных допускаются случайные пробелы:
SELECT LTRIM(city) FROM vendors;
В нашем случае лишних пробелов не было, поэтому и результат внешне мы не увидим.
RTRIM(str) Возвращает строку str, в которой удалены все конечные пробелы:
SELECT RTRIM(city) FROM vendors;
В нашем случае лишних пробелов не было, поэтому и результат внешне мы не увидим.
TRIM(str) Возвращает строку str, в которой удалены все начальные и конечные пробелы:
SELECT TRIM(city) FROM vendors;
LOWER(str) Возвращает строку str, в которой все символы переведены в нижний регистр.
С русскими буквами работает некорректно, поэтому лучше не применять. Например, давайте
применим эту функцию к столбцу city:
SELECT city, LOWER(city) FROM vendors;
Видите, какая абракадабра получилась. А вот с латиницей все в порядке:
SELECT LOWER('CITY');
UPPER(str) Возвращает строку str, в которой все символы переведены в верхний регистр.
С русскими буквами так же лучше не применять. А вот с латиницей все в порядке:
SELECT UPPER(email) FROM customers;
LENGTH(str) Возвращает длину строки str. Например, давайте узнаем сколько символов в наших
адресах поставщиков:
SELECT address, LENGTH(address) FROM vendors;
LEFT(str, len) Возвращает len левых символов строки str. Например, пусть в городах поставщиков
выводится только первые три символа:
SELECT name, LEFT(city, 3) FROM vendors;
RIGHT(str, len) Возвращает len правых символов строки str. Например, пусть в городах поставщиков
выводится только последние три символа:
SELECT name, RIGHT(city, 3) FROM vendors;
REPEAT(str, n) Возвращает строку str n-количество раз. Например:
SELECT REPEAT(city, 3) FROM vendors;
REPLACE(str, pod_str1, pod_str2) Возвращает строку str, в которой все подстроки pod_str1 заменены
подстроками pod_str2. Например, пусть мы хотим, чтобы в городах поставщиков вместо длинного 'Санкт-Петербург' выводилось
короткое 'СПб':
SELECT REPLACE(city, 'Санкт-Петербург', 'СПб') FROM vendors;
REVERSE(str) Возвращает строку str, записанную в обратном порядке:
SELECT REVERSE(city) FROM vendors;
LOAD_FILE(file_name) Эта функция читает файл file_name и возвращает его содержимое в виде строки.
Например, создайте файл proverka.txt, напишите в нем какой-нибудь текст (лучше латиницей, чтобы не было проблем
с кодировками), сохраните его на диске С и сделайте следующий запрос:
Как уже упоминалось строковых функций гораздо больше, но даже некоторые рассмотренные здесь применяются крайне редко. Поэтому
на этом закончим их рассмотрение и перейдем к более используемым функциям даты и времени.