MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment EXPORT_SET() fonctionne dans MariaDB

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'