Поиск

Различные функции

  • FORMAT(X,D). Форматирует число Xв формате, подобном ' #, ###, ### . ##', округленное до Dразрядов, и возвращает результат в виде строки. Если D равно 0, результат не имеет десятичной точки или дробной части.
    mysql> SELECT FORMAT(12332.123456, 4);
  • -> '12,332.1235' mysql> SELECT FORMAT(12332.1,4);
    -> '12,332.1000' mysql> SELECT FORMAT(12332.2,0);
    -> '12,332'
  • GET_LOCK(строка,таймаут). Пытается получить блокировку по имени, заданном строкой строка, с таймаутом длительностью таймаут секунд. Возвращает 1, если блокировка получена успешно, 0, если время ожидания превысило таймаут (например, из-за того, что другой клиент уже заблокировал это имя), либо NULL, если произошла ошибка (такая как переполнение памяти или уничтожение потока командой mysqladmin kill). Если у вас есть блокировка, полученная через GET_LOCK(), она снимается после выполнения RELEASE_LOCK(), нового вызова
    GET_LOCK () либо разрыва соединения (как нормального, так и не нормального). Эта функция может использоваться для реализации блокировок приложений или
    для эмуляции блокировок записей. Имена блокируются в глобальном контексте сервера. Если имя блокировано одним клиентом, GET_LOCK() блокирует любой запрос другого клиента на получение блокировки с тем же именем. Это позволяет клиентам согласовывать попытки доступа к общим ресурсам.
    mysql> SELECT GET_LOCK(' lockl',10);
  • -> 1 mysql> SELECT IS_FREE_LOCK('locM•);
    -> 1 mysql> SELECT GET_LOCK('Iock2',10);
    -> 1 mysql> SELECT RELEASE_LOCK('Iock2');
    -> 1 mysql> SELECT RELEASE_LOCK('lockl');
    -> NULL
    Следует отметить, что второй вызов RELEASE_LOCK() возвращает NULL, поскольку блокировка ' lockl' была автоматически снята вторым вызовом GETLOCK ().
  • INET_ATON (выражение). Принимает сетевой адрес, представленный четырьмя чис­
    лами с разделителем-точкой, и возвращает целое, представляющее числовое зна­
    чение адреса. Адрес может быть 4- или 8-байтным.
  • mysql> SELECT INET_ATON('209.207.224.40'); -> 3520061480
    Сгенерированное число всегда содержит байты в порядке, заданном в сетевом ад­ресе. Для только что приведенного примера оно вычисляется как 209 * 25б3 + 2
    Начиная с версии MySQL 4.1.2, INET_ATON() также понимает IP-адреса в сокра­щенной форме:

    mysql> SELECT INETATON('127.0.0.Г ), INET_ATON(' 127. 1'); -> 2130706433, ""2130706433
    Функция INET_ATON () была добавлена в MySQL 3.23.15.
  • INET_NTOA (выражение). Принимает сетевой адрес в виде числа (4- или 8-байтного), возвращает адрес, представленный строкой, состоящей из четырех чисел, разделенных точкой.
  • mysql> SELECT INET_NTOA(3520061480); -> '209.207.224.40'
    Функция INET_NTOA () появилась в MySQL 3.23.15.
  • IS_FREE_LOCK {строка). Проверяет, свободна ли блокировка с именем строка. Возвращает 1, если блокировка свободна (никем не используется), 0, если занята, и NULL в случае ошибки. Функция IS_FREE_LOCK() была добавлена в MySQL 4.O.2.
  • IS_USED_LOCK{строка). Проверяет, используется ли блокировка с именем строка (то есть, установлена ли она). Если это так, возвращает идентификатор соединения клиента, который удерживает блокировку. В противном случае возвращает NULL.
  • Функция IS_USED_LOCK() появилась в версии MySQL 4.I.O.
  • MASTER_POS_WAIT (имя_журнала, позиция_в_журиале [, таймаут])
  • Эта функция удобна для управления синхронизацией главный/подчиненный. Бло­кирует главный сервер до тех пор, пока подчиненный сервер не прочитает и не проведет все изменения вплоть до указанной позиции в бинарном журнале глав­ного сервера. Возвращаемое значение представляет количество событий в журна­ле, обработку которых нужно выполнить системе синхронизации, чтобы дойти до указанной позиции. Функция возвращает null, если поток SQL подчиненного сервера не запущен, либо информация о главном сервере не инициализирована на подчиненном, либо указаны неправильные аргументы. Возвращает -1, если ис­текло время таймаута. Если подчиненный сервер уже достиг указанной позиции, функция возвращает управление немедленно.
    Если задано значение таймаут, MASTER_POS_WAIT () прекращает ожидание, когда истекают таймаут секунд. Значение таймаут может быть больше 0, а если его зна­чение равно 0 или является отрицательным, то ожидания нет.
    Функция MASTER_POS_WAIT() добавлена в MySQL 3.23.32. Аргумент таймаут поя­вился в версии 4.0.10.

    1. RELEASE_LOCK(строка). Снимает блокировку с именем строка, которая была получена с помощью функции GET_LOCK(). Возвращает 1, если блокировка снята, 0,
      если блокировка была установлена другим потоком (а значит, не может быть снята), и NULL, если блокировка с таким именем не существует. Блокировка не существует, если не была установлена вызовом GETJLOCK (), либо она уже снята. Вместе с RELEASE_LOCK () удобно использовать оператор DO (см. раздел Синтаксис DO).
    2. UUID(). Возвращает Универсальный Уникальный Идентификатор (Universal Unique Identifier - UUID), сгенерированный в соответствии со спецификациями
"DCE Ы: Remote Procedure Call" (Appendix A) CAE (Common Applications
Environment) ("DCE 1.1: Удаленный вызов процедур" (Приложение А) САЕ (Общая среда приложений)), опубликованными Open Group в октябре 1987 года (до­кумент под номером С706).
Идентификатор UUID спроектирован как число, которое является глобально уни­кальным во времени и пространстве. Ожидается, что два вызова UUIDO сгенери­руют два разных значения, даже если эти два вызова произойдут на двух разных компьютерах, которые не подключены друг к другу.
UUID - это 128-разрядное число, представленное в виде строки, состоящей из пя­ти шестнадцатеричных чисел в формате aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:

  1. Первые три числа генерируются на основе временной метки.
  2. Четвертое число предохраняет темпоральную уникальность в случае, если значение временной метки теряет монотонность (например, из-за перехода на летнее время и обратно).
  3. Пятое число - это номер узла ШЕЕ 802, который представляет пространственную уникальность. Случайное число подставляется в случае, если последнее недоступно (например, если компьютер-хост не имеет сетевой платы Ethernet, или нет возможности извлечь аппаратный адрес интерфейса вашего компьютера). В этом случае пространственная уникальность не может быть гарантирована. Однако, несмотря на это, коллизии крайне маловероятны. В настоящее время МАС-адрес интерфейса принимается во внимание только в средах FreeBSD и Linux. В других операционных системах MySQL использует случайно сгенерированное 48-разрядное число.

raysql> SELECT UUID();
-> '6ccd780c-baba-1026-9564-0040f4311e29' Следует отметить, что UUID () пока не работает с репликацией. Функция UUID () появилась в версии MySQL 4.I.2.