Строковые функции позволяют осуществлять преобразование строк и строковых столбцов.
При использовании строковых функций помнить, что позиция в строке начинается с 1, а не с 0.
Примечание. Если строковые функции передаются в качестве одного из аргументов значение NULL, она также возвращает NULL.
Функция | Описание |
ASCII(str) | Возвращает значение ASCII-кода первого символа строки str |
BIN(N) |
Принимает десятичное число N и возвращает его двоичное представление |
BIT_LENGTH(str) | Принимает строку str и возвращает ее длину в битах |
CHAR(N1, N2, . . .) |
Принимает последовательность из ASCII-кодов и возвращает строку, созданную путем объединения соответствующих символов |
CHAR_LENGTH(str) CHARACTER_LENGTH(str) |
Возвращает количество символов в строке str. |
CHARSET(str) |
Возвращает имя кодировки, в которой представлена строка, передаваемая функции в качестве аргумента |
COLLATION(str) |
Возвращает порядок сортировки, установленный для кодировки аргумента str |
COMPRESS(string_to_compress) | Сжимает строку string_to_compress при момощи библиотеки zlib |
CONCAT(str1, str2, . . .) | Возвращает строку, созданную путем объединения всех аргументов, количество которых не ограничено |
CONCAT_WS(separator, str1,str2, . . .) | Объединяет аргументы str1,str2 и т.д., помещая между ними разделитель separator |
CONV(N, from_base, to_base) |
Преобразует число N из одной системы счисления from_base в другую to_base. Параметры from_base и to_base могут принимать значения от 2 до 36 |
CONVERT(expr, type), CONVERT(expr, USING charset) |
Преобразует выражения expr в тип type. Вторая форма функции CONVERT() (с использованием USING) предназначена для преобразования текста из одной кодировки в другую |
ELT(N, str1, str2, str3, . . .) |
Возвращает N-ю строку из списка аргументов str1, str2, str3 и т.д.: для N=1 возвращается str1, для N=2 — str2 и т.д..Если строка с номером N отсутствует или равна NULL, возвращается NULL |
EXPORT_SET(bits, on, off [, separator [, number_of_bits]]) |
Возвращается число bits в двоичном представлении, 1 в котором заменяется на параметр on, а 0 — на параметр off. Необязательный параметр separator задает разделитель, которым по умолчанию является запятая. Параметр number_of_bits позволяет ограничить количество возвращаемых функцией символов (по умолчанию равно 64). Если данный параметр не задан, будут выведены все 64 символа, а недостающие символы будут установлены в 0(off) |
FIELD(str, str1, str2, . . .) |
Находит строку str строка в списке строк str1, str2, . . . и возвращает номер строки в этом списке (нумерация начинается с 1) |
FIND_IN_SET(str, str_list) |
Ищет вхождение строки str в список str_list и возвращает номер строки в этом списке (нумерация начинается с 1). Если вхождение не найдено, возвращается 0. Параметр str_list представляет собой набор строк, разделенных запятыми |
FORMAT(X, D) |
Преобразует число Х в строку D знаками после запятой. Каждые три разряда разделяются запятой |
HEX(N_or_S) |
Возвращает значение аргумента N_or_S в виде шестнадцатеричного продукта. Аргумент N_or_S может быть как числом, так и строкой. |
INSERT(str, pos, len, new_str) |
Возвращает строку str, в которой подстрока, начинающаяся с позиции pos и имеющая длину len символов, заменена подстрокой new_str. Функция возвращает строку str без изменений, если значение pos находится за пределами строки |
INSTR(str, substr) |
Возвращает позицию первого вхождения подстроки substr в строку str |
LEFT(str, len) |
Возвращает len крайних левых символов строки str. Если аргумент len превышает число символов в строке str, она возвращается без изменений. Если len равно NULL или меньше 0, возвращается пустая строка |
LENGTH(str), OCTET_LENGTH(str) |
Возвращает длину строки str. Данная функция может некорректно работать с многобайтовыми кодировками, т.к. фактически возвращает количество байтов в строке, а не символов |
LOAD_FILE(file_name) |
Читает файл file_name и возвращает его содержимое в виде строки. Файл должен быть расположен на сервере, а в параметре file_name необходимо указывать абсолютный путь к файлу. Если файл не существует или не может быть прочитан из-за того, что MySQL не обладает достаточными правами доступа, то возвращается NULL |
LOCATE(substr, str [, pos]), POSITION(substr IN str) |
Возвращает позицию первого вхождения подстроки substr в строку str. Если ни одно вхождение не найдено возвращается 0. Если хотябы один из аргументов функции равен NULL, функция возвращает NULL. При наличии необязательного аргумента pos поиск начинается с позиции, указанной в этом аргументе |
LOWER(str), LCASE() |
Возвращает строку str, в которой все символы записаны строчными символами |
LPAD(str, len, padstr) | Возвращает строку str дополненную слева стокой padstr до длины len |
LTRIM (str) | Возвращает строку str, из которой удалены все начальные пробелы |
MAKE_SET (N, bit0_str, bit1_str, . . .) |
Представляет число N в двоичной форме, создавая список для типа SET, заменяя 1 значениями из списка bit0_str, bit_str, . . ., при этом для первого разряда используется bit0_str, для второго — bit1_str и т.д. |
MID (str, pos [, len]), SUBSTRING (str, pos, len) |
Возвращает подстроку строки str, которая начинается с позиции pos и имеет длину len символов. Если третий параметр len не указывается, то подстрока возвращается, начиная с позиции pos и до конца строки str |
OCT(N) | Возвращает число в восьмеричной системе счисления |
ORD(str) |
Возвращает ASCII-код крайнего левого символа строки str. Аналогична функции ASCII(), но в отличии от последней корректно работает с многобайтовыми кодировками |
QUOTE(str) |
Экранирует строку str с тем, чтобы получить корректное значение для SQL-выражения. Строка заключается в одинарные кавычки, и каждое вхождение одинарной кавычки ('), обратного слеша (\), значения ASCII-символов nul и <Ctrl>+<Z> ' экранируется обратным слешем |
REPEAT(str, count) |
Возвращает строку, полученную из count повторений строки str. Если аргумент count имеет отрицательное значение или ноль, возвращается пустая строка |
REPLASE(str, from_str, to_str) |
Возвращает строку str, в которой все подстроки from_str заменены to_str |
REVERSE(str) | Возвращает строку str, записанную в обратном порядке |
RIGHT(str, len) |
Возвращает len крайних правых символов строки str или всю строку str, если ее длина короче len. Функция возвращает пустую строку, если аргумент len равен NULL или меньше 1. Если строка str равна NULL, также возвращается NULL |
RPAD(str, len, padstr) |
Возвращает строку str, дополненную справа строкой padstr до длины len. Если строка str содержит более len символов, она усекается до len |
RTRIM(str) | Возвращает строку str, из которой удалены все конечные пробелы |
SOUNDEX(str) |
Возвращает произношение строки str по алгоритму, описанному Д. Кнутом. Все неалфавитные символы в строке игнорируются, а национальные символы рассматриваются как гласные |
SPACE(N) |
Возвращает строку, состоящую из N пробелов, или пустую строку, если N имеет отрицательное значение |
SUBSTRING_INDEX(str, delim, N) |
Возвращает подстроку строки str. Если параметр N имеет положительное значение, то функция SUBSTRING_INDEX() находит N-е вхождение (отсчет слева) подстроки delim в строку str и возвращает часть строки, расположенную слева от подстроки delim. Если N имеет отрицательное значение, то находится N-е вхождение (отсчет справа) подстроки delim в строку str и возвращается часть строки, раположенная справа от подстроки delim |
TRIM( [BOTH|LEADING|TRAILING] [remstr] FROM] str) |
Удаляет из строки str расположенные в начале (в конце) символы, указанные в строке remstr. Если указано ключевое слово LEADING, удаляются символы, расположенные в начале, если TRAILING — в конце, если BOTH — и в начале и в конце. Если ни одно из ключевых слов не задано, то по умолчанию устанавливается BOTH. Если строка remstr не задана, в качестве удаляемых символов выступают пробелы |
UNCOMPRESS( string_to_uncompress) |
Разархивирует строку string_to_uncompress, сжатую при помощи функции COMPRESS(). |
UNCOMPRESSED_LENGTH( compressed_string) |
Возвращает длину строки compressed_string, сжатой функцией COMPRESS() до применения данной функции, т.е. при помощи функции UNCOMPRESSED_LENGTH() можно выяснить, какой длины будет строка после разархивирования ее функцией UNCOMPRESS() |
UNHEX(str) |
Является обратной функции HEX() и интерпретирует каждую пару символов строки str как шестнадцатеричный код, который необходимо преобразовать в символ |
UPPER(str) UCASE(str) |
Переводит все символы строки str в верхний регистр |
Функция CONVERT(expr, USING charset) преобразует текст из одной кодировки в другую.
Преобразование кодировки
Иногда требуется не преобразовывать строку из одной кодировки в другую при помощи функции CONVERT(), а указать ее кодировку: это осуществляется при помощи так называемого представителя: имени кодировки, начинающегося с сисмвола подчеркивания.
Альтернативное преобразование кодировки
Очень часто требуется выбирать из столбца не весь текст, а лишь несколько первых символов. Пусть используется таблица tb4, содержащая сведения о сотрудниках, из которых требуется извлечь первые пять символов поля fio. Эту задачу удобно решать при помощи функции SUBSTRING().
Извлечение из столбца первых пяти символов
Пусть имеется таблица tb5, которая содержит полные фамилию, имя, отчество сотрудников в трех разных столбцах.
Таблица tb5
Пусть требуется извлечь только фамилию и инициалы. Решить эту задачу можно с помощью запроса.
Извлечение инициалов работников из таблицы tb5
Как видно из примера, инициалы извлекаются при помощи функции SUBSTRING(), а полученный результат объединяется в одну строку при помощи функции CONCAT().
Пусть требуется перевести все строки таблицы tb5 в верхний регистр.
Преобразование строк в верхний регистр
Преобразование строки в верхний регистр осуществляется при помощи функции UPPER(); для решения обратной задачи предназначена функция LOWER().
Преобразование строк в нижний регистр
Перевод нового символа в верхний регистр