Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MySQL. Библиотека профессионала - Аткинсон Л

..pdf
Скачиваний:
165
Добавлен:
24.05.2014
Размер:
10.41 Mб
Скачать

Глава Встроенные функции

счетчик)

Эта функция возвращает строку, которая состоит из заданной строки, повторяю щейся указанное число раз (листинг 12.80).

новая подстрока)

Эта функция меняет в исходной строке каждое вхождение старой подстроки на новуюподстроку(листинг12.81).

Эта функция меняет порядок символов в строке на обратный (листинг 12.82).

183

счетчик)

Эта функция возвращает указанное число символов строки, считая с ее правого конца (листинг 12.83). Функция LEFT работает с противоположного конца.

(строка, длина, заполнитель)

Эта функция дополняет строку до указанной длины, вставляя справа строку заполнитель (листинг 12.84). Функция LPAD дополняет строку слева.

Эта функция удаляет из строки конечные пробелы. В листинге 12.85 строка очи щается от хвостовых пробелов, после чего конкатенируется с другой строкой.

Глава Встроенные функции

Эта функция возвращает основанный на особенностях звучания слов ки. Данный алгоритм описан Дональдом Кнутом в третьем томе книги "Искусство граммирования". Хэш код состоит из четырех символов и начинается с буквы. В листин ге 12.86 показано получение двух слов, близких по звучанию.

Эта функция возвращает строку, состоящую из указанного количества пробелов (листинг 12.87). То же самое можно сделать с помощью функции REPEAT

Строки 185

Эта функция сравнивает две строки, возвращая 0, если строкиравны, 1, если пер вая строка предшествует второй по алфавиту, и 1, если вторая строка предшествует первой (листинг 12.88).

SUBSTRING(CTpOKa FROM позиция [FOR

Эта функция извлекает строки подстроку заданной длины, начиная с указанной позиции. В данной версии аргументы разделяются ключевыми словами, а не запяты ми, что соответствует стандарту ANSI.

SUBSTRING(строка,

Эта функция извлекает из строки подстроку заданной длины, начиная с указанной позиции (листинг 12.89). Нумерация символов строки начинается с единицы. Если длина подстроки не задана, возвращается остаток строки.

разделитель, счетчик)

Эта функция возвращает подстроку, которая содержит заданное количество раз делителей. Если счетчик является положительным числом, подстрока извлекается слева, в противном случае — справа. Влистинге 12.90 функция возвращает первые два элемента списка, компоненты которого разделены запятыми.

Глава Встроенные функции

TRIM| LEADING \ TRAILING] заполнитель FROM] строка)

Эта функция удаляет из строки символы заполнители. По умолчанию удаляются начальные и конечные пробелы (листинг 12.91).

Эта функция возвращает строку, все символы которой переведены в верхний ре гистр (листинг Обратное преобразование осуществляется с помощью функции

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

Это синоним функции UCASE

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

Описанные ниже функции работают со значениями даты/времени. Будучи извле ченными из базы данных, эти значения приводятся к целочисленному или строковому типу, в зависимости от контекста. Например, функция NOW по умолчанию возвращает

строку вида 12:59:58", но может вернуть и число вида

если

по контексту требуется целое число.

 

Любая функция, ожидающая значение даты или времени, понимает значение, в котором указана как дата, так и время.

INTERVAL значение тип)

Это синоним функции DATE_ADD

Эта функция возвращает значение текущей даты (листинг 12.93). Она эквивалент функцииCURRENT_DATE.

CURRENT_DATE

Эта функция возвращает значение текущей даты (листинг 12.94). Она эквивалент на функции CURDATE но не требует скобок.

Глава Встроенные функции

Эта функция возвращает значение текущего времени (листинг 12 .95). эквива лентна функции но не требует скобок.

Эта функция возвращает значение текущих даты и времени (листинг 12.96). Она эквивалентнафункции NOW О но нетребует скобок.

Эта функция возвращает значениетекущего времени (листинг 12.97). Она эквива лентна функции

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

INTERVAL значение

Эта функция добавляет значение времени к значению даты или времени. Прибав ляемое значение задается после ключевого слова INTERVAL с указанием требуемого типа данных. Возможные типы описаны в табл.

Тип

Формат

DAY

Дни

DAY_HOUR

 

DAY_MINUTE

DAY_SECOND

HOUR

 

Часы

HOUR

MINUTE

HOUR

SECOND

MINUTE

Минуты

MINUTE

SECOND

MONTH

 

Месяцы

SECOND

Секунды

YEAR

 

Годы

YEAR_MONTH

Прибавить к значению даты интервальное значение позволяет оператор на пример NOW + INTERVAL DAY. Вычестьинтервальноезначениеможно с помощью оператора или функции DATE_SUB Если какая то часть интервального значения пропущена, программа MySQL будет интерпретировать его справа налево и присваи вать пропущенным компонентам 0. Например, спецификация для интервала типа DAY_MINUTE эквивалентна использованию интервала

В листинге вычисляется текущее время и время через две недели.

Глава Встроенные функции

формат)

Эта форматирует даты в соответствии с заданной специфика цией. Строка формата может содержать произвольное число кодов, начинающихся с символа % и обозначающих тот или иной компонент даты. Остальные символы попа дают в возвращаемую строку без изменения.

Код

Описание

 

Примеры

%

Литеральный символ %

 

%

 

Сокращенное название дня недели

 

 

Сокращенное название месяца

Jan... Dec

 

Номер месяца без ведущего нуля

12

 

Номер дня месяца с англ ийским суффиксом

1st, 2nd, 3rd, 4th,

 

Номер дня месяца с ведущим нулем

31

 

Номер дня месяца

 

 

 

Номер часа в

формате с ведущим

 

 

нулем

 

 

 

Номер часа в 12 часовом

формате с ведущим

 

 

нулем

 

 

 

 

 

01... 12

 

Число минут с ведущим нулем

 

%

Номер дня года с ведущими нулями

 

 

Номер часа в формате без ведущего

3

 

нуля

 

 

1

Номер часа в

формате без ведущего

12

 

нуля

 

 

 

Название месяца

 

January. December

 

Номер месяца с ведущим нулем

12

 

Обозначение периода суток

AM, PM

 

Время в 12 часовом формате

AM

Числосекунд

00 ... 59

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

Код

Описание

 

Примеры

 

Время в

формате

 

 

Номер недели года, в котором первым днем

 

 

неделиявляетсяпонедельник

 

 

Номер недели года, в котором первым днем

 

 

недели является воскресенье

 

 

Номер недели года, в котором первым днем

1. .53

 

недели является

понедельник; используется

 

 

совместно с кодом

 

 

Номер недели года, в котором первым днем

 

 

недели является воскресенье; используется

 

 

вместно с кодом

 

 

 

Номер дня недели

 

6

 

Название дня недели

Saturday

 

Год, первым днем которого является

 

 

используется совместно с кодом %v

 

 

Год, первым днем которого является

0000.

 

используется совместно с кодом

 

 

Год столетия

00... 99

%Y

Год

 

Коды

%V, и

работают по тому принципу, чтогод должен начинаться либо

с воскресенья, либо с понедельника. В соответствии с этой логикой 1 января 1970 г. относилось к 53 й неделе 1969 г.

В листинге 12.99 значение даты января 1970г.) отформатировано так, чтобы отображалось название дня.