Функции MySQL
MySQL имеет множество встроенных функций, которые позволяют выпол- нять определенные действия с данными. Например, функция NOW() возвра- щает текущие дату и время, а функция DATE_FORMAT() преобразует формат вывода даты.
При использовании функций следует помнить, что между круглыми скобка- ми и именем функции не должно быть пробела, а скобки следует обязательно указывать, даже если в функцию не передаются аргументы. Рассмотрим функции MySQL более подробно.
6.11.1. Функции для работы с числами
Стандартные тригонометрические функции (аргументы должны задаваться в радианах):
? SIN() — синус;
? COS() — косинус;
? TAN() — тангенс;
? COT() — котангенс.
Обратные тригонометрические функции (возвращают значение в радианах):
? ASIN() — арксинус;
? ACOS() — арккосинус;
? ATAN() — арктангенс.
Округление чисел:
? CEILING() — значение, округленное до ближайшего большего целого:
SELECT CEILING(4.3);
/* Выведет: 5 */
? CEIL() — значение, округленное до ближайшего большего целого:
SELECT CEIL(4.3);
/* Выведет: 5 */
? FLOOR() — значение, округленное до ближайшего меньшего целого:
SELECT FLOOR(4.6);
/* Выведет: 4 */
? ROUND() — значение, округленное до ближайшего меньшего целого для чисел с дробной частью меньше 0.5, или значение, округленное до бли- жайшего большего целого для чисел с дробной частью больше 0.5. Если дробная часть числа равна 0.5, то округление зависит от версии MySQL. Начиная с версии 5.0.3, округление производится в большую сторону:
SELECT ROUND(4.49);
/* Выведет: 4 */ SELECT ROUND(4.5);
/* В зависимости от версии MySQL, выведет 4 или 5. */ SELECT ROUND(4.501);
/* Выведет: 5 */ SELECT ROUND(4.51);
/* Выведет: 5 */
? TRUNCATE(X, Y) возвращает дробное число X с Y количеством знаков по- сле запятой. Если в качестве значения аргумента Y передать значение 0, то функция вернет число, округленное до меньшего целого:
SELECT TRUNCATE(4.55, 0);
/* Выведет: 4 */
SELECT TRUNCATE(4.55, 1);
/* Выведет: 4.5 */
SELECT TRUNCATE(4.55, 3);
/* Выведет: 4.550 */
Функции для преобразования чисел:
? CONV(<Число>, <Исходная система>, <Нужная система>) преобразует число из одной системы счисления в другую:
SELECT CONV(255, 10, 16);
/* Выведет: FF */
SELECT CONV(‘FF’, 16, 10);
/* Выведет: 255 */
? BIN(<Число>) преобразует число из десятичной системы счисления в двоичную:
SELECT BIN(17);
/* Выведет: 10001 */
? HEX() возвращает значение аргумента в виде шестнадцатеричного числа:
SELECT HEX(255);
/* Выведет: FF */
? OCT(<Число>) преобразует число из десятичной системы счисления в восьмеричную:
SELECT OCT(10);
/* Выведет: 12 */
Прочие функции:
? ABS() — абсолютное значение:
SELECT ABS(-4.55);
/* Выведет: 4.55 */
? EXP() — экспонента;
? LOG(X) — натуральный логарифм;
? LOG2(X) — логарифм числа по основанию 2:
SELECT LOG2(128);
/* Выведет: 7 */
? LOG10(X) — логарифм числа по основанию 10:
SELECT LOG10(100);
/* Выведет: 2 */
? LOG(<Основание>, X) — логарифм числа X по основанию <Основание>:
SELECT LOG(2, 128);
/* Выведет: 7 */ SELECT LOG(10, 100);
/* Выведет: 2 */
? POW(<Число>, <Степень>) возводит <Число> в <Степень>:
SELECT POW(5, 2);
/* Выведет: 25 */
? SQRT() извлекает квадратный корень:
SELECT SQRT(25);
/* Выведет: 5 */
? PI() возвращает число ?:
SELECT PI();
/* Выведет: 3.141593 */
? MOD(X, Y) определяет остаток от деления X на Y:
SELECT MOD(10, 2);
/* Выведет: 0 */
? DEGREES() преобразует значение угла из радиан в градусы:
SELECT DEGREES(PI());
/* Выведет: 180 */
? RADIANS() преобразует значение угла из градусов в радианы:
SELECT RADIANS(180);
/* Выведет 3.141592653589793 */
? SIGN() возвращает -1, если число отрицательное, 1, если число положи-
тельное, и 0, если число равно нулю:
SELECT SIGN(-80);
/* Выведет: -1 */ SELECT SIGN(80);
/* Выведет: 1 */
? LEAST() служит для определения минимального значения из списка:
SELECT LEAST(2, 1, 3);
/* Выведет: 1 */
? GREATEST() позволяет определить максимальное значение из списка:
SELECT GREATEST(2, 1, 3);
/* Выведет: 3 */
? FORMAT(<Число>, <Количество знаков после запятой>) форматирует число в строку с заданным количеством знаков после запятой. Позиция запятой отмечается точкой, а каждые три разряда отделяются запятой (это американский стандарт записи чисел):
SELECT FORMAT(56873.8732, 2);
/* Выведет: 56,873.87 */
? RAND() возвращает случайное число в диапазоне от 0 до 1. Если в функ- цию передать параметр, то это настроит генератор на новую последова- тельность. Следует учитывать, что при передаче одного и того же пара- метра функция выдает одну и ту же последовательность:
SELECT RAND();
/* Выведет: 0.35286363153985106 */ SELECT RAND();
/* Выведет: 0.7805252687824195 */ SELECT RAND(10);
/* Выведет: 0.6570515219653505 */ SELECT RAND(10);
/* Выведет: 0.6570515219653505 */
В качестве примера рассмотрим вывод записи из базы данных случайным образом. Предположим, что наш сайт — развлекательный портал, и в базе данных есть таблица, заполненная анекдотами. При каждом запросе страни- цы мы будем выводить один анекдот случайным образом. Для этого в базе данных tests создадим таблицу anecdotes:
SET NAMES cp866;
CREATE TABLE anecdotes
(
id
INT NOT NULL AUTO_INCREMENT,
anecdote
TEXT, PRIMARY KEY (id
)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Затем добавим несколько записей:
INSERT INTO anecdotes
VALUES (NULL, ‘Анекдот 1’); INSERT INTO anecdotes
VALUES (NULL, ‘Анекдот 2’);
INSERT INTO anecdotes
VALUES (NULL, ‘Анекдот 3’); INSERT INTO anecdotes
VALUES (NULL, ‘Анекдот 4’); INSERT INTO anecdotes
VALUES (NULL, ‘Анекдот 5’);
Исходный код для вывода анекдота случайным образом приведен в листин-
ге 6.3.
Листинг 6.3. Вывод анекдота случайным образом
<?php
if ($db = @mysql_connect("localhost", "root", "123456")) {
mysql_select_db(‘tests’);
mysql_query("SET NAMES cp1251");
$query = ‘SELECT * FROM anecdotes
ORDER BY RAND() LIMIT 1′;
$res = mysql_query($query);
if (mysql_num_rows($res) == 1) {
echo mysql_result($res, 0, ‘anecdote’);
}
mysql_close($db);
}
?>
Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)
Похожие посты:
- Изменение высоты строки (межстрочного интервала) в тексте (0)
- Изменение стиля маркеров списка или удаление маркеров (0)
- Изменение вида элементов формы с помощью CSS (0)
- Справочник по обобщенным представлениям Django (0)
- Встроенные шаблонные теги и фильтры Django (0)
- Справочник по встроенным фильтрам add Django (0)
- Аргументы представления, принимаемые по умолчанию Django (0)