КОнтакты, предложения, отзывы

.rar или .zip
Вложение
Онлайн-чат
На этом сайте, вы найдёте полезную информацию, практические советы в области веб-программирования, веб-дизайна и веб-разработок в целом. Мы с удовольствием поделимся с вами реальными примерами и решениями задач, связанных с jQuery , JavaScript , PHP и MySQL , версткой сайтов , поможем разобраться новичкам с современными технологиями, такими как Ajax , HTML5 , CSS3 и многими другими.

Функции MySQL

За счет функций, встроенных в MySQL, существенно сокращается время выпол­нения сложных запросов и упрощается их конструкция. Давайте рассмотрим самые на мой взгляд полезные.

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

CONCAT

CONCAT(strl, str2, ...)
Возвращает результат объединения str1, str2 и любых других параметров (или NULL, если все аргументы имеют значение NULL). Если какой-нибудь из аргументов имеет двоичную форму (binary), то результат будет возвращен в виде двоичной последовательности, в противном случае результат будет в виде строки, не имеющей двоичного формата. Следующий код возвращает строку MySQL:
SELECT concat( 'My', 'SQL' ) AS `concat_str` FROM posts;

CONCAT_WS()

C0NCAT_WS(separator, strl, str2, ...)
Эта функция работает так же, как и C0NCAT, за исключением того, что она между объединяемыми элементами вставляет разделитель separator. Если разделитель име­ет значение NULL, то результат тоже будет NULL, но значения NULL могут использоваться и в качестве других аргументов, которые в таком случае будут пропущены. Следующий код возвращает строку Truman, Harry, S:
SELECT  CONCAT_WS(','  'Truman',  'Harry',  'S');

LEFT() и RIGHT()

LEFT(str, len)
Возвращает len самых левых (или правых) символов из строки str (или NULL, если какой-нибудь из аргументов имеет значение NULL). Следующий код возвращает строку Chris:
SELECT  LEFT('Christopher  Columbus’, '5');

MID()

MID(str,pos, len)
Возвращает до len символов из строки str, начиная с позиции pos. Если аргумент len опущен, то возвращаются все символы до конца строки. Для аргумента pos можно использовать отрицательное значение, тогда он будет представлять позицию символа, вычисляемую с конца строки. Первой позицией в строке является 1. Сле­дующий код возвращает строку stop:
SELECT  MID('Christopher  Columbus', '6',  '4');

LENGTH()

LENGTH(str)
Возвращает длину строки str в байтах. Имейте в виду, что при встрече многобайтовых символов учитываются все их байты. Если нужно узнать число символов в строке, сле­дует воспользоваться функцией CHAR_LENGTH. Следующий код возвращает значение 15:
SELECT  LENGTH('Mark  Zuckerberg');

LOCATE()

LOCATE(substr, str, pos)
Возвращает позицию первой же встреченной подстроки substr в строке str. Если функции передан параметр pos, то поиск начинается с позиции pos. Если substr не была найдена в строке str, возвращается значение 0. Следующий код возвращает значения 5 и 11, поскольку при вызове первой функции возвращается позиция первого встреченного слова unit, а вторая функция начинает поиск только с седьмого символа и поэтому возвращает позицию второ­го появления этого слова в строке:
SELECT LOCATE('unit',  'Community unit');
SELECT  LOCATE ('unit',  'Community unit', 7);

LOWER() и UPPER

LOWER(str) Эта функция является прямой противоположностью функции UPPER. Она воз­вращает строку str, все буквы которой переводятся в нижний регистр. Следующий код возвращает строку queen elizabeth ii:
SELECT  L0WER('Queen  Elizabeth  II');

QUOTE()

QUOTE(sir)
Возвращает строку, помещенную в кавычки, которая будет готова к использо­ванию в инструкции SQL, для чего в ней отключаются все неоднозначно толкуемые символы. Возвращаемая строка заключается в одинарные кавычки, а перед всеми имеющимися в пей одинарными кавычками, обратными слешами, ASCII-симво­лами NULL и Ctrl-Z устанавливается обратный слеш. Если аргумент имеет значение NULL, возвращаемое значение является словом NULL, не заключенным в кавычки. Код примера возвращает следующую строку:
'I\’m hungry'
Обратите внимание на то, как символ одинарной кавычки (') был заменен сим­волами /'.
SELECT  QUOTE("I'm  hungry");

REPEAT()

REPEAT(str. count)
Возвращает строку, содержащую count копий строки str. Если count меньше единицы, возвращается пустая строка. Если какой-нибудь из параметров имеет значение NULL, возвращается NULL. Следующий код возвращает строки Но Но Но и Merry Christmas:
SELECT  REPFAT('Но'.  3) as `repeat_str`,  'Merry  Christmas' as `merry` FROM web4myself.posts;

REPLACE()

REPLACE(str, from, to)
Возвращает строку str, в которой все появления строки from заменены строкой to. При проведении поиска подстроки from поиск и замена чувствительны к реги­стру. Следующий код возвращает cтроку Cheeseburger and Coke:
SELECT  REPLACE( 'Cheeseburger  and  Fries', 'Fries',   'Coke');

TRIM()

TRIM([specifier remove FROM] str)
Возвращает строку str, из которой удалены все префиксы и суффиксы, имеющие значение remove. В качестве specifier может быть указан один из спецификаторов BOTH (оба), LEADING (ведущие) или TRAILING (замыкающие). Если спецификатор не указан, предполагается спецификатор BOTH. Строка remove является необязательным параметром, и если она опущена, то удаляются пробелы. Следующий код возвра­щает строки No Padding и Неllо_:
SELECT  TRIM('  No  Padding  ');
SELECT  TRIM( LEADING   '_'  FROM  '_Hello_');

Функции для работы с датами

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

Типы данных DATE и TIME

На рисунке ниже показана категория типов данных, поддерживаемая MySQL, которая относится к дате и времени. Значения, имеющие типы данных DATETIME и TIMESTAMP, отображаются одинако­во. Основное различие в том, что у TIMESTAMP слишком узкий диапазон (от 1970 и до 2037 года), а в DATETIME может храниться практически любая нужная дата, если только вы не интересуетесь античной историей или научной фантастикой. Но TIMESTAMP также полезен, потому что, используя его, можно позволить MySQL установить для вас нужное значение. Если при добавлении строки не задавать значение для поля с этим типом данных, то в него автоматически будет вставлено текущее время. Можно также заставить MySQL обновлять столбец с типом данных TIMESTAMP при каждом изменении строки.
Тип DATETIME - хранит значение даты в формате "YYYY-MM-DD HH:MM:SS" и не зависит от часового пояса. TIMESTAMP - хранит метку времени, т.е. количество секунд, прошедших с 1 января 1970-го года. Эти значение, MySQL преобразует с учётом текущего часового пояса как при записи в базу, так и при выводе из неё.

STR_TO_DATE()

STR_TO_DATE(str, format), где "str" - строка даты и "format" - соответствующий ей формат.
SELECT STR_TO_DATE('31.12.2013', '%d.%m.%Y'); /* "2013-12-31" */
SELECT STR_TO_DATE('31/12/13 13:50', '%d/%m/%y %H:%i'); /* "2013-12-31 13:50:00" */
Результат выполнения - дата в формате, который используется в MySQL по умолчанию. То есть, нам надо указать не формат, в котором мы хотим получить дату на выходе, а формат, в котором мы предоставляем дату для обработки. Используя такой способ, можно составлять такие запросы:
SELECT * FROM `table_name`
      WHERE `date_field`
      BETWEEN STR_TO_DATE('05.07.2014', '%d.%m.%Y') AND STR_TO_DATE('July 15, 2014', '%M %d,%Y')
      ORDER BY `date_field`;

CURDATE()

CURDATE()
Возвращает текущую дату в формате YYYY-MM-DD или YYYMMDD в зависимости от того, в каком контексте используется функция, строковом или числовом. 2 мая 2016 года следующий код вернул бы значения 2016-05-02 и 20160502:
SELECT  CURDATE();
SELECT  CURDATE()  +  0;

DATE()

DATE(expr)
Извлекает дату из выражения DATETIME, переданного в аргументе ехрг. Сле­дующий код возвращает значение 1961-05-02:
SELECT  DATE( '1961-05-02  14:56:23’ );

DATE_ADD()

DATE_ADD(date, INTERVAL expr unit)
Возвращает результат добавления выражения expr, в котором к дате применя­ется единица измерения unit. Аргумент date является стартовой датой или значе­нием DATETIME, а expr для отрицательных интервалов может начинаться с ми­нуса (-). В табл. Ниже показаны типы интервалов, поддерживаемые и ожидаемые в качестве значений expr. Обратите внимание на приведенные в этой таблице примеры, которые показывают, в каких случаях значение expr должно быть за­ключено в кавычки, чтобы база данных MySQL смогла их правильно интерпрети­ровать (при любых сомнениях лучше добавить кавычки, которые не помешают работе). Для вычитания интервала дат можно также воспользоваться функцией DATE_SUB. Но функциями DATE ADD и DATE_SUB можно вообще не пользоваться, поскольку MySQL допускает использование непосредственных арифметических операций с датами. Данный код:
SELECT  DATE_ADD('1975-01-01' .  INTERVAL  77 DAY);
SELECT  DATE_SUB( '1982-07-04' .  INTERVAL  '3-11'  YEAR_MONTH);
SELECT  '2016-12-31  23:59:59'  +  INTERVAL  1  SECOND;
SELECT  '2000-01-01'  -  INTERVAL  1  SECOND;
возвращает следующие значения:
1975-03-19
1978-08-04
2017-01-01 00:00:00
1999-12-31 23:59:59
Обратите внимание на то, как в последних двух командах используются непо­средственные арифметические операции с датами без обращения к функциям.

DATE_FORMAT()

DATE_FORMAT(date,format)
Эта функция возвращает значение даты date, отформатированное в соответствии со строкой форматирования format. Ниже показаны спецификаторы, которые могут использоваться в строке форматирования format. Учтите, что символ % нужно ставить так, как показано в таблице, то есть впереди каждого спецификатора. Следующий код возвращает заданную дату и время в виде Thursday May 4th 2016 03:02 AM»:
SELECT  DATE_FORMAT('2016-05-04  03:02:01', '%W %M %D  %Y %h:%l  %p');


SYSDATE()

Возвращает текущую дату и время в виде значения в формате либо YYYY-MM-DD HH:MM:SS, либо YYYYMMDDHHMMSS, в зависимости оттого, в каком контексте используется функция, строковом или числовом. Аналогичным образом работает функция NOW, за исключением того, что она возвращает время и дату только па момент запуска текущей инструкции, а функция SYSDATK возвращает время и дату именно на момент вызова самой функции. 19 декабря 2016 года следующий код вернет значения 2016-12-19 19:11:13 и 20161219191113:
SELECT SYSDATE();
SELECT SYSDATE() + 0;

Также присутствует много других функций, направленных на извлечение из даты года, месяца или же дня :: YEAR(), MONTH(), DAY(), DAYNAME(), MONTHNAME(), WEEK() и т.д.
Для человека, хоть немного знакомого с английским, не составит труда понять, что, к примеру, функция MONTH() возвращает месяц даты, YEAR() - её год, а DAY() (или синоним DAYOFMONTH()) - день.
Аналогичные функции существуют и для получения часов, минут и секунд

Функции для работы с временем

Иногда приходится работать не с датой, а с временем, и MySQL предоставляет для этого большое количество функций.

CURTIME()

CURTIME()
Возвращает текущее время в виде значения, имеющего формат HH:MM:SS или HHMMSS.uuuuuu в зависимости от того, в каком контексте используется функция, строковом или числовом. Значение дается с учетом текущего часового пояса. При текущем времени 11:56:23 следующий код возвращает значения 11:56:23 и 115623.000000:
SELECT  CURTIME();
SELECT  CURTIME()  +  0;

МАКЕТ1МЕ()

МАКЕТIME(hour, minute, second)
Возвращает значение времени, вычисленное на основе аргументов часа hour, минуты minute и секунды second. Следующий код возвращает время 11:56:23:
SELECT  МАКЕТ1МЕ(11,  56,  23);

TIMEDIFF()

TIMEDIFF(exprI, expr2)
Возвращает разницу между exprl и expr2 (exprl - ехрг2) в виде значения времени. Оба аргумента, exprl и ехрг2, должны быть выражениями одинакового типа в фор­мате TIME или DATETIME. Следующий код возвращает значение 01:37:38:
SELECT  TIMEDIFF('2000-01-01  01:02:03',  '1999-12-31  23:24:25');

UNIX_TIMESTAMP()

UNIX_TIMESTAMP([da£e])
Эта функция при вызове без необязательного аргумента date возвращает в фор­мате беззнакового целого числа то количество секунд, которое прошло с нуля часов, нуля минут и нуля секунд универсального синхронного времени (UTC) 1 января 1970 года. Если функции передается параметр date, тогда возвращаемое значение содержит количество секунд, которое прошло с 1970 года по указанную дату date. Следующий код возвращает значение 946684800 (количество секунд, которое прошло до начала нового тысячелетия), а затем возвращает отметку времени TIMESTAMP, представляющую текущее время системы Unix на момент запуска функции:
SELECT  UNIX_TIMESTAMP('2000-01-01');
SELECT  UNIX_TIMESTAMP();

FROM_UNIXTIME()

FROM_UNIXTIME(unix_timestamp [, format])
Возвращает параметр unix_timestamp либо в формате строки YYYY-MM-DD HH:MM:SS, либо в формате числа YYYYMMDDHHMMSS.uuuuuu в зависимости от того, в каком контексте используется функция, строковом или числовом. Если задан необязательный параметр format , результат форматируется в соответствии со спецификаторами, показанными на рисунке выше. Следующий код возвращает стро­ки «2000-01-01 00:00:00» и «Saturday January 1st 2000 12:00 AM»:
SELECT  FR0M_UNIXTIME(946684800);
SELECT  FR0M_UNIXTIME(946684800, '%W  %M %D  %Y %h:%i %p');
2016.04.14 75

Войдите или Зарегистрируйтесь чтобы оставить комментарий

Комментарии


    Яндекс.Метрика Яндекс.Метрика