Dans MariaDB, EXPORT_SET()
est une fonction de chaîne intégrée qui renvoie une chaîne qui reflète les bits de la valeur spécifiée. Pour chaque bit défini dans la valeur spécifiée, vous obtenez une chaîne "on" et pour chaque bit non défini dans la valeur, vous obtenez une chaîne "off".
Il accepte un minimum de trois arguments, plus deux arguments facultatifs.
Syntaxe
La syntaxe ressemble à ceci :
EXPORT_SET(bits, on, off[, separator[, number_of_bits]])
Le tableau suivant fournit une explication de ces arguments.
bits | La valeur pour laquelle vous souhaitez que les résultats soient renvoyés. Fourni sous la forme d'un entier, mais il est converti en bits. Pour chaque bit défini dans cette valeur, vous obtenez un on chaîne, et pour chaque bit qui n'est pas défini dans la valeur, vous obtenez un off corde. Les bits sont examinés de droite à gauche (des bits de poids faible aux bits de poids fort). |
on | La chaîne renvoyée pour tout on bits. |
off | La chaîne renvoyée pour tout off bits. |
separator | Argument facultatif que vous pouvez utiliser pour spécifier le séparateur à utiliser. La valeur par défaut est le caractère virgule. Par conséquent, si vous ne spécifiez pas cet argument, une virgule est utilisée comme séparateur. |
number_of_bits | Le nombre de bits à examiner. La valeur par défaut est 64. Si vous fournissez une valeur plus grande, celle-ci est silencieusement tronquée à 64 si elle est supérieure à 64. |
Exemple
Voici un exemple de base :
SELECT EXPORT_SET(13,'On','Off',',',4);
Résultat :
+---------------------------------+ | EXPORT_SET(13,'On','Off',',',4) | +---------------------------------+ | On,Off,On,On | +---------------------------------+
Nous pouvons voir que les premier, troisième et quatrième bits sont définis, mais pas le second.
Nous pouvons utiliser le BIN()
fonction pour retourner un résultat similaire, mais dans l'ordre inverse :
SELECT BIN(13);
Résultat :
+---------+ | BIN(13) | +---------+ | 1101 | +---------+
Le BIN()
La fonction renvoie une représentation sous forme de chaîne de la valeur binaire du longlong donné. Dans cet exemple, il a renvoyé trois 1
s.
Dans notre EXPORT_SET()
exemple, nous avons spécifié que on
et off
doit être utilisé pour représenter le 1
et 0
respectivement. Nous pouvons cependant changer cela (ci-dessous).
Aussi, avec EXPORT_SET()
, les chaînes sont ajoutées au résultat de gauche à droite. Par conséquent, le résultat de EXPORT_SET()
ressemble à une image miroir du résultat de BIN()
.
Modifier les valeurs Marche/Arrêt
Ici, c'est encore une fois, mais cette fois nous utilisons une chaîne différente pour le on
et off
états.
SELECT EXPORT_SET(7,'1','0',',',4);
Résultat :
+-----------------------------+ | EXPORT_SET(7,'1','0',',',4) | +-----------------------------+ | 1,1,1,0 | +-----------------------------+
Cette fois, nous utilisons 1
et 0
, similaire à ce que le BIN()
la fonction revient, mais avec un séparateur ajouté (et inversé).
Changer le séparateur
Le quatrième argument (facultatif) spécifie le séparateur à utiliser. Le voici avec un séparateur différent :
SELECT EXPORT_SET(7,'True','False','-',4);
Résultat :
+------------------------------------+ | EXPORT_SET(7,'True','False','-',4) | +------------------------------------+ | True-True-True-False | +------------------------------------+
Modifier le nombre de bits à examiner
Le cinquième argument (facultatif) spécifie le nombre de bits à examiner. Dans les exemples précédents, nous avons utilisé 4 comme nombre de bits à examiner. Nous pouvons l'augmenter si nous le souhaitons :
SELECT EXPORT_SET(7,'1','0',',',10);
Résultat :
+------------------------------+ | EXPORT_SET(7,'1','0',',',10) | +------------------------------+ | 1,1,1,0,0,0,0,0,0,0 | +------------------------------+
Dans ce cas, tous les bits supplémentaires ne sont pas définis. Augmentons la valeur du premier argument pour voir comment cela affecte le résultat :
SELECT EXPORT_SET(172,'1','0',',',10);
Résultat :
+--------------------------------+ | EXPORT_SET(172,'1','0',',',10) | +--------------------------------+ | 0,0,1,1,0,1,0,1,0,0 | +--------------------------------+
Valeurs par défaut
Comme mentionné, les quatrième et cinquième arguments sont facultatifs. Lorsque vous les omettez, les valeurs par défaut sont utilisées.
Nombre de bits par défaut
Si on enlève le dernier argument, 64 bits sont examinés :
SELECT EXPORT_SET(172,'1','0','');
Résultat :
+------------------------------------------------------------------+ | EXPORT_SET(172,'1','0','') | +------------------------------------------------------------------+ | 0011010100000000000000000000000000000000000000000000000000000000 | +------------------------------------------------------------------+
Dans ce cas, j'ai également supprimé le séparateur afin de rendre la sortie plus concise.
Séparateur par défaut
Nous pouvons également supprimer l'argument séparateur. Lorsque nous faisons cela, EXPORT_SET()
utilise la virgule comme séparateur par défaut.
SELECT EXPORT_SET(123456789,'1','0');
Résultat :
+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+ | EXPORT_SET(123456789,'1','0') | +---------------------------------------------------------------------------------------------------------------------------------+ | 1,0,1,0,1,0,0,0,1,0,1,1,0,0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 | +---------------------------------------------------------------------------------------------------------------------------------+
Arguments nuls
Si l'un des arguments est null
, le résultat est null
:
SELECT
EXPORT_SET(null,'1','0') AS "1",
EXPORT_SET(7,null,'0') AS "2",
EXPORT_SET(7,'1',null) AS "3",
EXPORT_SET(7,'1','0',null,4) AS "4",
EXPORT_SET(7,'1','0',',',null) AS "5";
Résultat :
+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | +------+------+------+------+------+ | NULL | NULL | NULL | NULL | NULL | +------+------+------+------+------+
Arguments manquants
Appel de EXPORT_SET()
sans passer d'arguments (ou avec le mauvais nombre d'arguments) génère une erreur :
SELECT EXPORT_SET();
Résultat :
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXPORT_SET'