• FROM_UNIXTIME(<Unix-время>[,\'<Формат>\']).
Функция FROM_UNIXTIME() получает в качестве аргумента Unix-время – количество секунд, прошедших с 1 января 1970 г., и возвращает соответствующую дату и время. Например, функция FROM_UNIXTIME(1197451800) возвращает значение 2007-12-12 12:30:00. При необходимости вы можете задать формат возвращаемой даты и/или времени, используя параметры, которые мы перечислили при описании функции DATE_FORMAT().
• UNIX_TIMESTAMP(<Дата>).
Если аргумент функции UNIX_TIMESTAMP() не задан, то она возвращает текущее Unix-время. Если задан аргумент – дата, дата и время либо число в формате YYYYMMDD, YYMMDD, YYYYMMDDHHMMSS или YYMMDDHHMMSS, то функция UNIX_TIMESTAMP() возвращает Unix-время, соответствующее указанной дате. Например, функция UNIX_TIMESTAMP(20071212123000) возвращает значение 1197451800.
• TIMESTAMP(\'<Дата или дата время>\').
Если задан только один аргумент функции TIMESTAMP(), то она возвращает этот аргумент, преобразованный в формат даты и времени. Например, TIMESTAMP(\'2007-12-12\') возвращает значение 2007-12-12 00:00:00.
Итак, вы изучили функции, выполняющие операции с датами и временем. В следующем разделе мы рассмотрим некоторые функции, работающие с символьными значениями.
3.5. Символьные функции
Рассмотрим символьные функции, которые вы можете использовать в выражениях.
• BIT_LENGTH(\'<Строка>\').
Функция BIT_LENGTH() возвращает длину строки в битах. Например, функция BIT_LENGTH(\'Крылов\') возвращает значение 48 при использовании однобайтовой кодировки и значение 96 при использовании кодировки UTF-8.
• CHAR_LENGTH(\'<Строка>\'), CHARACTER_LENGTH(\'<Строка>\').
Возвращают количество символов в строке. Например, функция CHAR_LENGTH(\'Крылов\') возвращает значение 6.
• LENGTH(\'<Строка>\'), OCTET_LENGTH(\'<Строка>\').
Возвращают длину строки (в байтах). Например, функция LENGTH(\'Крылов\') возвращает значение 6 при использовании однобайтовой кодировки и значение 12 при использовании кодировки UTF-8.
• CHAR(<Код 1>,<Код 2>,…,<Код N> [USING <Кодировка>]).
Функция CHAR() получает в качестве аргументов коды символов и возвращает строку, состоящую из этих символов. При необходимости можно явно указать кодировку, сопоставляющую коды символам. Например, функции CHAR(53402,53632,53643,53435,53438,53426 USING utf8) и CHAR(138,224,235,171,174,162 USING cp866) возвращают значение Крылов.
• ORD(\'<Строка>\').
Функция ORD() возвращает числовой код первого символа в строке. Например, функция ORD(CHAR(53402,53632,53643,53435,53438,53426 USING utf8)) возвращает значение 53402.
• CONCAT(\'<Строка 1>\',\'<Строка 2>\',…, \'<Строка N>\').
Функция CONCAT() возвращает результат объединения своих аргументов. Например, функция CONCAT(\'ООО “Кускус”\',\'Петров\',\'Крылов\') возвращает значение ООО «Кускус»ПетровКрылов.
• CONCAT_WS(\'Разделитель\',\'<Строка 1>\',\'<Строка 2>\',…,\'<Строка N>\').
Функция CONCAT_WS() возвращает результат объединения своих аргументов, при этом первый аргумент используется как разделитель. Например, функция CONCAT_WS(\',\',\'ООО “Кускус”\',\'Петров\',\'Крылов\') возвращает значение ООО «Кускус»,Петров,Крылов.
• REPEAT(\'<Строка>\',\'Количество экземпляров, не менее 1\').
Функция REPEAT(\'<Строка>\',<Количество экземпляров>) возвращает строку, в которую исходная строка входит указанное количество раз. Например, функция REPEAT(\'Трижды\',3) возвращает значение ТриждыТриждыТрижды.
• REVERSE(\'<Строка>\').
Функция REVERSE() возвращает строку, в которой символы исходной строки расположены в обратном порядке. Например, функция REVERSE(\'наоборот\') возвращает значение торобоан.
• SPACE(<Количество пробелов>).
Функция SPACE() возвращает строку, состоящую из указанного количества пробелов. Например, функция SPACE(1) возвращает значение «.».
• ELT(k,\'<Строка 1>\',\'<Строка 2>\',…, \'<Строка N>\').
Функция ELT() возвращает строку с порядковым номером k. Например, функция ELT(2,\'ООО «Кускус»\',\'Петров\',\'Крылов\') возвращает значение Петров.
• FIELD(\'<Строка-образец>\',\'<Строка 1>\',\'<Строка 2>\',…,\'<Строка N>\').
Функция FIELD() возвращает порядковый номер строки, совпадающей с образцом, и 0, если ни одна из строк 1, 2, …, N не совпадает с образцом. Например, функция FIELD(\'Петров\',\'ООО «Кускус»\',\'Петров\', \'Крылов\') возвращает значение 2.
• FIND_IN_SET(\'<Строка-образец>\',\'<Строка-контейнер>\').
Функция FIND_IN_SET() получает в качестве аргумента строку-образец (эта строка не должна содержать запятых) и строку-контейнер вида <Подстрока 1>,<Подстрока 2>,…,<Подстрока N> и возвращает порядковый номер подстроки, совпадающей с образцом, и 0, если ни одна из подстрок 1, 2, …,N не совпадает с образцом или строка-контейнер пустая. Например, функция FIND_IN_SET(\'Петров\',\'ООО «Кускус»,Петров,Крылов\') возвращает значение 2.
• EXPORT_SET(<Число>,\'<Подстрока для бита 1>\',\'<Подстрока для бита 0>\'[,\'<Разделитель>\'[,<Количество бит>]]).
Функция EXPORT_SET() преобразует число в строку, заменяя каждый бит (0 или 1) соответствующей подстрокой, и возвращает полученную строку. Биты рассматриваются в обратном порядке, то есть справа налево. При необходимости можно задать разделитель подстрок (если разделитель не задан, используется запятая), а также максимальное количество битов, которые будут обработаны (недостающие биты рассматриваются как нулевые, «лишние» биты игнорируются, а если количество битов не задано, используется значение 64). Например, функция EXPORT_SET(25,\'Да\',\'Нет\',\':\',7) возвращает значение Да:Нет:Нет:Да:Да:Нет:Нет, поскольку 25 записывается в двоичной системе счисления как 11001.
• MAKE_SET(<Число>,\'<Подстрока 0>\',\'<Подстрока 1>\',…, \'<Подстрока N>\').
Функция MAKE_SET() преобразует число в строку: подстрока с порядковым номером k добавляется в строку, если k-й бит равен 1. Биты рассматриваются в обратном порядке, то есть справа налево. Разделителем подстрок служит запятая. Например, функция MAKE_SET(6,\'Я согласен получать новости компании\',\'Я согласен участвовать в опросах\',\'Я согласен участвовать в тестировании продукта\') возвращает значение Я согласен участвовать в опросах, Я согласен участвовать в тестировании продукта, поскольку 6 записывается в двоичной системе счисления как 110.
• INSERT(\'<Строка>\',<Позиция>,<Длина подстроки>,\'<Замещающая подстрока>\').
Функция INSERT() возвращает строку, в которой подстрока, начинающаяся с указанной позиции и состоящая из указанного количества символов, заменена заданной подстрокой. Например, функция INSERT(\'ООО “Кускус”\',6,3,\'Кискис\') заменяет подстроку Кус строки ООО «Кускус» подстрокой Кискис и возвращает значение ООО «Кискискус».
• REPLACE(\'<Строка>\',\'<Замещаемая подстрока>\',\'<Замещающая подстрока>\').
Функция REPLACE() возвращает строку, в которой вместо замещаемой подстроки подставлена замещающая. Например, функция REPLACE(\'Не имей сто рублей, а имей сто друзей\',\'сто\',\'тысячу\') возвращает значение Не имей тысячу рублей, а имей тысячу друзей.
• SUBSTR(\'<Строка>\',<Позиция>[,<Длина>]), SUBSTRING(\'<Строка>\',<Позиция>[,<Длина>]), SUBSTR(\'<Строка>\' FROM <Позиция>[ FOR <Длина>]), SUBSTRING(\'<Строка>\' FROM <Позиция>[ FOR <Длина>]).
Возвращают подстроку исходной строки, начинающуюся с указанной позиции. При необходимости можно указать длину получаемой подстроки. Если номер позиции меньше 0, то позиция отсчитывается не от начала строки, а от конца.
Например:
– функция SUBSTR(\'Семь чудес света\',6) возвращает значение чудес света;
– функция SUBSTR(\'Семь чудес света\',6,5) возвращает значение чудес;
– функция SUBSTR(\'Семь чудес света\',-5) возвращает значение света.
• MID(\'<Строка>\',<Позиция>,<Длина>).
Синоним функции SUBSTRING(\'<Строка>\',<Позиция>,<Длина>).
• SUBSTRING_INDEX(\'<Строка>\',\'<Подстрока>\',<Порядковый номер вхождения>).
Если заданный порядковый номер вхождения больше 0, то функция SUBSTRING_INDEX() находит в исходной строке вхождение указанной подстроки с этим порядковым номером (считая от начала строки) и возвращает часть исходной строки, предшествующую этому вхождению. Если же заданный порядковый номер вхождения меньше 0, то вхождения отсчитываются от конца строки и возвращается часть исходной строки, которая следует за этим вхождением. Например, функция SUBSTRING_INDEX(\'Семь чудес света\',\' \',2) возвращает значение Семь чудес (подстроку, предшествующую второму пробелу), а функция SUBSTRING_INDEX(\'Семь чудес света\',\' \',-2) возвращает значение чудес света (подстроку, следующую за вторым пробелом).
• LEFT(\'<Строка>\',<Длина подстроки>).
Функция LEFT() возвращает начальную подстроку исходной строки, состоящую из указанного количества символов. Например, функция LEFT(\'Генератор\',3) возвращает значение Ген.
• RIGHT(\'<Строка>\',<Длина подстроки>).
Функция RIGHT() возвращает подстроку, состоящую из указанного количества последних символов исходной строки. Например, функция RIGHT(\'Генератор\',3) возвращает значение тор.
• LOCATE(\'<Подстрока>\',\'<Строка>\'[,<Позиция>]).
Функция LOCATE() возвращает позицию, с которой начинается первое вхождение подстроки в строку, или 0, если строка не содержит такой подстроки. При необходимости можно указать позицию в исходной строке, начиная с которой нужно искать вхождение подстроки. Например, функция