Как создать свой сайт - Уроки SQL - Строковые функции MySql

Строковые функции Sql

Эта группа функций позволяет манипулировать текстом. Строковых функций много, мы рассмотрим наиболее употребительные.
  • CONCAT(str1,str2...) Возвращает строку, созданную путем объединения аргументов (аргументы указываются в скобках - str1,str2...). Например, в нашей таблице Поставщики (vendors) есть столбец Город (city) и столбец Адрес (address). Предположим, мы хотим, чтобы в результирующей таблице Адрес и Город указывались в одном столбце, т.е. мы хотим объединить данные из двух столбцов в один. Для этого мы будем использовать строковую функцию CONCAT(), а в качестве аргументов укажем названия объединяемых столбцов - city и address:
    SELECT CONCAT(city, address) FROM vendors;
    строковые функции concat

    Обратите внимание, объединение произошло без разделения, что не очень читабельно. Давайте подправим наш запрос, чтобы между объединяемыми столбцами был пробел:
    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;
    строковые функции insert

    То есть три символа, начиная с первого, заменены тремя пробелами.

  • LPAD(str, len, dop_str) Возвращает строку str, дополненную слева строкой dop_str до длины len. Предположим, мы хотим, чтобы при выводе городов поставщиков они располагались бы справа, а пустое пространство заполнялось бы точками:
    SELECT LPAD(city, 15, '.') FROM vendors;
    строковые функции lpad

    Обратите внимание, значение len ограничивает количество выводимых символов, т.е. если название города будет длиннее 15 символов, то оно будет обрезано.

  • RPAD(str, len, dop_str) Возвращает строку str, дополненную справа строкой dop_str до длины len. Предположим, мы хотим, чтобы при выводе городов поставщиков они располагались бы слева, а пустое пространство заполнялось бы точками:
    SELECT RPAD(city, 15, '.') FROM vendors;
    строковые функции rpad

    Обратите внимание, значение 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, напишите в нем какой-нибудь текст (лучше латиницей, чтобы не было проблем с кодировками), сохраните его на диске С и сделайте следующий запрос:
    SELECT LOAD_FILE("C:/proverka");
    Обратите внимание, необходимо указывать абсолютный путь к файлу.

Как уже упоминалось строковых функций гораздо больше, но даже некоторые рассмотренные здесь применяются крайне редко. Поэтому на этом закончим их рассмотрение и перейдем к более используемым функциям даты и времени.



Предыдущий урок Вернуться в раздел Следующий урок 
Программирование на Python для начинающих


Теперь нажмите кнопку, что бы не забыть адрес и вернуться к нам снова.