В 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'