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
-
COMPRESS(string_to_compress)
-
Compresse une chaîne.
mysql> SELECT LENGTH(COMPRESS(REPEAT("a",1000))); -> 21 mysql> SELECT LENGTH(COMPRESS("")); -> 0 mysql> SELECT LENGTH(COMPRESS("a")); -> 13 mysql> SELECT LENGTH(COMPRESS(REPEAT("a",16))); -> 15
|
COMPRESS()
a été ajoutée en MySQL version 4.1.1.
Elle requiert une bibliothèque de compression, comme
zlib
,
compilée avec MySQL. Sinon, la valeur retournée sera toujours
NULL
.La chaîne compressée sera stockée de cette manière :
-
Les chaînes vides sont stockées comme des chaînes vides.
-
Les chaînes non-vides sont stockées dans le forma suivant : les quatre
premiers octets représente la taille de la chaîne compressée, qui suit.
Si la chaîne se termine par un espace, un caractère
'.'
sera ajouté
pour éviter les problèmes avec les colonnes
CHAR
et
VARCHAR
.
Utilisez
CHAR
ou
VARCHAR
pour stocker des chaînes compressées
n'est pas recommandé. Il est mieux d'utiliser une colonne de type
BLOB
.
-
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
.
-
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 replication. 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 replications.
-
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 des
DO
.
-
UNCOMPRESS(string_to_uncompress)
-
Décompresse une chaîne compressée par la fonction
COMPRESS()
.
mysql> SELECT UNCOMPRESS(COMPRESS("any string")); -> 'any string'
|
UNCOMPRESS()
a été ajouté en MySQL version 4.1.1.
Elle requiert une bibliothèque de compression comme
zlib
,
compilée avec MySQL. Sinon, elle retourne
NULL
.
-
UNCOMPRESSED_LENGTH(compressed_string)
-
Retourne la taille de la chaîne compressée avant compression.
mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT("a",30))); -> 30
|
UNCOMPRESSED_LENGTH()
a été ajoutée en MySQL version 4.1.1.
|