Функции MySQL

Опубликовал: Tuesday, March 27, 2024 в категории HTML | Пока нет комментариев

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) — (Профессиональное программирование)

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *