13.8 Autres fonctions
13 Fonctions à utiliser dans les clauses SELECT et WHERE
Manuel de Référence MySQL 4.1 : Version Française
. Fonctions sur les bits . Fonctions de chiffrements . Fonctions d'informations ->Fonctions diverses
|
13.8.4 Fonctions diverses
-
FORMAT(X,D)
-
Formate l'argument
X
en un format comme
'#,###,###.##'
, arrondi à
D
décimales. Si
D
vaut
0
, le résultat n'aura ni séparateur décimal,
ni partie décimale :
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(str,timeout)
-
Tente de poser un verrou nommé
str
, avec un délai d'expiration
(
timeout
) exprimé en seconde. Retourne
1
si le verrou a été
posé avec succès,
0
si il n'a pas pu être posé avant l'expiration du délai et
NULL
si une erreur est survenu (comme par exemple un manque de mémoire,
ou la mort du thread lui-même, par
mysqladmin kill
). Un verrou sera levé
lorsque vous exécuterez la commande
RELEASE_LOCK()
,
GET_LOCK()
ou si
le thread se termine. Cette fonction peut être utilisée pour implémenter des verrous
applicatifs ou pour simuler des verrous de lignes. Les requêtes concurrentes des autres
clients de même nom seront bloquées ; les clients qui s'entendent sur un nom de
verrou peuvent les utiliser pour effectuer des verrouillages coopératifs :
mysql> SELECT GET_LOCK("lock1",10); -> 1 mysql> SELECT IS_FREE_LOCK("lock2"); -> 1 mysql> SELECT GET_LOCK("lock2",10); -> 1 mysql> SELECT RELEASE_LOCK("lock2"); -> 1 mysql> SELECT RELEASE_LOCK("lock1"); -> NULL
|
Notez que le deuxième appel à
RELEASE_LOCK()
retourne
NULL
car le
verrou
"lock1"
a été automatiquement libéré par le deuxième appel à
GET_LOCK()
.
-
INET_ATON(expr)
-
Retourne un entier qui représente l'expression numérique de l'adresse réseau.
Les adresses peuvent être des entiers de 4 ou 8 octets.
mysql> SELECT INET_ATON("209.207.224.40"); -> 3520061480
|
Le nombre généré est toujours dans l'ordre des octets réseau ;
par exemple, le nombre précédent est calculé comme ceci
:
209*256^3 + 207*256^2 + 224*256 +40
.Depuis MySQL 4.1.2,
INET_ATON()
comprend aussi les IP courtes :
mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1'); -> 2130706433, 2130706433
|
INET_ATON()
a été ajouté en MySQL 3.23.15.
-
INET_NTOA(expr)
-
Retourne l'adresse réseau (4 ou 8 octets), de l'expression numérique
exp
:
mysql> SELECT INET_NTOA(3520061480); -> "209.207.224.40"
|
-
IS_FREE_LOCK(str)
-
Regarde si le verrou nommé
str
peut être librement utilisé (i.e., non verrouillé).
Retourne
1
si le verrou est libre (personne ne l'utilise),
0
si le verrou
est actuellement utilisé et
NULL
si une erreur survient (comme un argument incorrect).
-
IS_USED_LOCK(str)
-
Vérifie si le verrou appelé
str
est actuellement posé ou pas.
Si c'est le cas, la fonction retourne l'identifiant de connexion
qui a le verrou. Sinon, elle retourne
NULL
.
IS_USED_LOCK()
a été ajouté en MySQL version 4.1.0.
-
MASTER_POS_WAIT(log_name, log_pos)
-
Bloque le maître jusqu'à ce que l'esclave atteigne une position donnée dans le
fichier d'historique principal, durant une réplication. Si l'historique principal n'est pas
initialisé, retourne
NULL
. Si l'esclave n'est pas démarré, le maître restera bloqué jusqu'à
ce que l'esclave soit démarré et ai atteint la position demandée. Si l'esclave a déjà dépassé
cette position, la fonction se termine immédiatement. La valeur retournée est le nombre d'évènements
qui a du être traité pour atteindre la position demandée, ou
NULL
en cas d'erreur.
Cette fonction est très utile pour contrôler la synchronisation maître-esclave, mais elle a
été initialement écrite pour faciliter les tests de réplications.
-
RELEASE_LOCK(str)
-
Libère le verrou nommé
str
, obtenu par la fonction
GET_LOCK()
.
Retourne
1
si le verrou a bien été libéré,
0
si le verrou n'a pas été
libéré par le thread (dans ce cas, le verrou reste posé) et
NULL
si le nom du verrou
n'existe pas. Le verrou n'existe pas si il n'a pas été obtenu par la fonction
GET_LOCK()
ou si il a déjà été libéré.
La commande
DO
est utilisable avec
RELEASE_LOCK()
.
Syntaxe de
DO
.
-
UUID()
- Retourne un
Universal Unique Identifier (UUID)
généré grâce à
``DCE 1.1: Remote Procedure Call'' (Appendix A)
CAE (Common Applications Environment) Specifications
, publié par
le
The Open Group
en octobre 1997 (Document numéro
C706
).
Un UUID est conçu comme un numéro qui est globalement unique dans l'espace,
et le temps. Deux appels à
UUID()
sont supposés générer deux valeurs différentes,
même si ces appels sont faits sur deux ordinateurs séparés, qui ne sont pas
connectés ensembles.
Un UUID est un nombre de 128 bits, représenté par une chaîne de 5 nombres
hexadécimaux, au format
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
:
-
Les trois premiers nombres sont générés à partir d'un timestamp.
-
Le quatrième nombre préserver l'unicité temporelle si le timestamp perd sa
monotonie (par exemple, à cause du changement d'heure d'hiver/été).
-
Le cinquième nombre est un nombre IEEE 802 qui fournit l'unicité. Un nombre
aléatoire est utilisé la si ce dernier n'est pas disponible (par exemple,
comme l'hôte n'a pas de carte Ethernet, nous ne savons pas comment trouver une
adresse matériel sur le système d'exploitation). Dans ce cas, l'unicité spatiale
ne peut être garantie. Néanmoins, une collision aura une
très
faible propriété.Actuellement, l'adresse MAC est une interface utilisée sur FreeBSD et Linux. Sur les autres
systèmes d'exploitation, MySQL génère un nombre aléatoire de 48 bits.
mysql> SELECT UUID(); -> '6ccd780c-baba-1026-9564-0040f4311e29'
|
Notez que
UUID()
ne fonctionne pas encore avec la réplication.
UUID()
a été ajoutée en MySQL 4.1.2.
|