В MariaDB, EXPORT_SET()
е вградена функция за низ, която връща низ, който отразява битовете в посочената стойност. За всеки бит, зададен в посочената стойност, получавате низ „включен“ и за всеки бит, който не е зададен в стойността, получавате низ „изключен“.
Той приема минимум три аргумента, плюс два незадължителни аргумента.
Синтаксис
Синтаксисът е така:
EXPORT_SET(bits, on, off[, separator[, number_of_bits]])
Следващата таблица предоставя обяснение на тези аргументи.
bits | Стойността, за която искате да се върнат резултатите. Предоставя се като цяло число, но се преобразува в битове. За всеки бит, който е зададен в тази стойност, получавате включено низ и за всеки бит, който не е зададен в стойността, получавате изключено низ. Битовете се изследват от дясно на ляво (от битове от нисък към висок ред). |
on | Низът, който е върнат за всяко on битове. |
off | Низът, който се връща за всяко изключено битове. |
separator | Незадължителен аргумент, който можете да използвате, за да посочите разделителя, който да използвате. Стойността по подразбиране е знакът запетая. Следователно, ако не посочите този аргумент, като разделител се използва запетая. |
number_of_bits | Броят на битовете за проверка. Стойността по подразбиране е 64. Ако предоставите по-голяма стойност, тя се изрязва безшумно до 64, ако е по-голяма от 64. |
Пример
Ето един основен пример:
SELECT EXPORT_SET(13,'On','Off',',',4);
Резултат:
+---------------------------------+ | EXPORT_SET(13,'On','Off',',',4) | +---------------------------------+ | On,Off,On,On | +---------------------------------+
Виждаме, че първият, третият и четвъртият бит са зададени, но вторият не е.
Можем да използваме BIN()
функция, за да върне подобен резултат, но в обратен ред:
SELECT BIN(13);
Резултат:
+---------+ | BIN(13) | +---------+ | 1101 | +---------+
BIN()
функцията връща низово представяне на двоичната стойност на дадения longlong. В този пример той върна три 1
с.
В нашия EXPORT_SET()
например, посочихме, че on
и off
трябва да се използва за представяне на 1
и 0
съответно. Можем обаче да променим това (по-долу).
Също така с EXPORT_SET()
, низовете се добавят към резултата отляво надясно. Следователно резултатът от EXPORT_SET()
изглежда като огледално изображение на резултата от BIN()
.
Променете стойностите за включване/изключване
Ето го отново, но този път използваме различен низ за on
и off
състояния.
SELECT EXPORT_SET(7,'1','0',',',4);
Резултат:
+-----------------------------+ | EXPORT_SET(7,'1','0',',',4) | +-----------------------------+ | 1,1,1,0 | +-----------------------------+
Този път използваме 1
и 0
, подобно на това, което BIN()
функцията се връща, но с добавен разделител (и обърнат).
Променете разделителя
Четвъртият (незадължителен) аргумент указва какъв разделител да се използва. Ето го с различен разделител:
SELECT EXPORT_SET(7,'True','False','-',4);
Резултат:
+------------------------------------+ | EXPORT_SET(7,'True','False','-',4) | +------------------------------------+ | True-True-True-False | +------------------------------------+
Променете броя на битовете за проверка
Петият (по избор) аргумент указва колко бита да се изследват. В предишните примери използвахме 4 като брой битове за изследване. Можем да увеличим това, ако искаме:
SELECT EXPORT_SET(7,'1','0',',',10);
Резултат:
+------------------------------+ | EXPORT_SET(7,'1','0',',',10) | +------------------------------+ | 1,1,1,0,0,0,0,0,0,0 | +------------------------------+
В този случай всички допълнителни битове не са зададени. Нека увеличим стойността на първия аргумент, за да видим как това се отразява на резултата:
SELECT EXPORT_SET(172,'1','0',',',10);
Резултат:
+--------------------------------+ | EXPORT_SET(172,'1','0',',',10) | +--------------------------------+ | 0,0,1,1,0,1,0,1,0,0 | +--------------------------------+
Стойности по подразбиране
Както бе споменато, четвъртият и петият аргумент са незадължителни. Когато ги пропуснете, се използват стойностите по подразбиране.
Брой битове по подразбиране
Ако премахнем последния аргумент, 64 бита се проверяват:
SELECT EXPORT_SET(172,'1','0','');
Резултат:
+------------------------------------------------------------------+ | EXPORT_SET(172,'1','0','') | +------------------------------------------------------------------+ | 0011010100000000000000000000000000000000000000000000000000000000 | +------------------------------------------------------------------+
В този случай премахнах и разделителя, за да направя изхода по-сбит.
Разделител по подразбиране
Можем също да премахнем аргумента разделител. Когато направим това, EXPORT_SET()
използва запетаята като разделител по подразбиране.
SELECT EXPORT_SET(123456789,'1','0');
Резултат:
+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+ | 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 | +---------------------------------------------------------------------------------------------------------------------------------+
Нулеви аргументи
Ако някой от аргументите е null
, резултатът е 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";
Резултат:
+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | +------+------+------+------+------+ | NULL | NULL | NULL | NULL | NULL | +------+------+------+------+------+
Липсващи аргументи
Извикване на EXPORT_SET()
без подаване на аргументи (или с грешен брой аргументи) води до грешка:
SELECT EXPORT_SET();
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXPORT_SET'