ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Строковые функции MySQL. Изменение кодировки строки

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

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

Строковые функции позволяют осуществлять преобразование строк и строковых столбцов.

При использовании строковых функций помнить, что позиция в строке начинается с 1, а не с 0.

Примечание. Если строковые функции передаются в качестве одного из аргументов значение NULL, она также возвращает NULL.

Таблица. Строковые функции MySQL
Функция Описание
ASCII(str) Возвращает значение ASCII-кода первого символа строки str
BIN(N) Принимает десятичное число N и возвращает его двоичное представление
BIT_LENGTH(str) Принимает строку str и возвращает ее длину в битах
CHAR(N1, N2, . . .) Принимает последовательность из ASCII-кодов и возвращает строку, созданную путем объединения соответствующих символов
CHAR_LENGTH(str)

CHARACTER_LENGTH(str)
Возвращает количество символов в строке str.
В отличии от функции LENGTH() ведет подсчет не байтов, а символов, поэтому корректно работает с многобайтовыми кодировками
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().
Если в качестве аргумента функции передается обычная, не сжатая строка, возвращается NULL
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

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

Извлечение инициалов работников из таблицы tb5

Извлечение инициалов работников из таблицы tb5

Как видно из примера, инициалы извлекаются при помощи функции SUBSTRING(), а полученный результат объединяется в одну строку при помощи функции CONCAT().

Изменение строки регистра

Пусть требуется перевести все строки таблицы tb5 в верхний регистр.

Преобразование строк в верхний регистр

Преобразование строк в верхний регистр

Преобразование строк в верхний регистр

Преобразование строки в верхний регистр осуществляется при помощи функции UPPER(); для решения обратной задачи предназначена функция LOWER().

Преобразование строк в нижний регистр

Преобразование строк в нижний регистр

Перевод нового символа в верхний регистр

Перевод нового символа в верхний регистр