MySQL EXPORT_SET()
функцията връща низ, който представлява битовете в число.
Имате възможността да персонализирате как функцията извежда низа. Функцията приема редица аргументи, които ви позволяват да направите това. Когато извикате функцията, вие предоставяте въпросния номер, както и аргументи, които определят как се показват резултатите.
Синтаксис
Синтаксисът е така:
EXPORT_SET(битове,включено,изключено[,разделител[,брой_битове]])
Ето обяснение на аргументите:
- битове
- Това е номерът, за който искате да се върнат резултатите. За всеки бит, който е зададен в тази стойност, получавате включено низ и за всеки бит, който не е зададен в стойността, получавате изключено низ. Битовете се изследват от дясно на ляво (от битове от нисък към висок ред).
- включено
- Това е, което се връща за всяко включване битове.
- изключено
- Това се връща за всяко изключване битове.
- разделител
- Това е незадължителен аргумент, който можете да използвате, за да посочите разделителя, който да използвате. Стойността по подразбиране е знакът запетая. Следователно, ако не посочите този аргумент, като разделител се използва запетая.
- брой_битове
- Броят на битовете за проверка. Стойността по подразбиране е 64. Ако предоставите по-голяма стойност, тя се изрязва безшумно до 64, ако е по-голяма от 64.
Пример 1 – Основна употреба
Ето пример за демонстриране на основното използване на тази функция.
SELECT EXPORT_SET(9,'On','Off',',',4);
Резултат:
+--------------------------------+| EXPORT_SET(9,'Вкл.','Изкл.',',',4) |+------------------------------ --+| Включено,Изключено,Изключено,Включено |+--------------------------------+
За да разберем този резултат, трябва да разберем как е числото 9
е представена в битове. За да направим това, можем да използваме BIN()
функция за извеждане на двоичното представяне на числото 9.
ИЗБЕРЕТЕ BIN(9);
Резултат:
+--------+| BIN(9) |+--------+| 1001 |+--------+
Така можем да видим, че двоичното представяне на 9 е 1001
. Всеки 1
е включено бит (той е зададен) и всеки 0
е изключено бит (не е зададен).
Пример 2 – Промяна на 2-ри и 3-ти аргумент
Можем да вземем предишния пример и да променим втория и третия аргумент.
ИЗБЕРЕТЕ EXPORT_SET(9,'Y','N',',',4);
Резултат:
+----------------------------+| EXPORT_SET(9,'Y','N',',',4) |+----------------------------+ | Y,N,N,Y |+----------------------------+
Така че сега за всяко включено малко, получаваме Y , и всеки изключен битът връща N .
Бихме могли дори да го променим, така че да се връщат единици и нули:
ИЗБЕРЕТЕ EXPORT_SET(9,1,0,',',4);
Резултат:
+------------------------+| EXPORT_SET(9,1,0,',',4) |+------------------------+| 1,0,0,1 |+------------------------+
Пример 3 – Промяна на 4-тия аргумент (разделителя)
В предишните примери изрично посочихме запетая като разделител. Това също е стойността по подразбиране.
Можем да сменим разделителя с нещо друго, ако е необходимо.
ИЗБЕРЕТЕ EXPORT_SET(9,1,0,'-',4);
Резултат:
+------------------------+| EXPORT_SET(9,1,0,'-',4) |+-------------------------+| 1-0-0-1 |+------------------------+
И ето какво се случва, ако посочим празния низ като разделител:
ИЗБЕРЕТЕ EXPORT_SET(9,1,0,'',4);
Резултат:
+-----------------------+| EXPORT_SET(9,1,0,'',4) |+-----------------------+| 1001 |+------------------+
Пример 4 – Промяна на 5-ия аргумент
Петият аргумент указва колко бита да се изследват. В предишния пример използвахме 4
като стойност, така че само четири бита бяха проверени (и върнати). Можем да увеличим или намалим това според изискванията, като посочим различна стойност като четвърти аргумент.
ИЗБЕРЕТЕ EXPORT_SET(9,1,0,'-',10);
Резултат:
+-------------------------+| EXPORT_SET(9,1,0,'-',10) |+-------------------------+| 1-0-0-1-0-0-0-0-0-0 |+------------------------------+предварително>В този пример увеличихме броя на изследваните битове до 10.
Не забравяйте, че битовете се разглеждат от дясно на ляво, така че допълнителните нули в този пример всъщност са за нулите от висок ред. Така че е в обратен ред на действителното двоично представяне.
Ето пример, за да демонстрирам какво имам предвид:
ИЗБЕРЕТЕ BIN(567), EXPORT_SET(567,1,0,'',10);Резултат:
+------------+--------------------------+| BIN(567) | EXPORT_SET(567,1,0,'',10) |+-----------+--------------------- -----+| 1000110111 | 1110110001 |+-----------+---------------------------+В този случай те изглеждат като огледални изображения. По принцип резултатът от
EXPORT_SET()
е в обратен ред наBIN()
.Стойността по подразбиране за петия аргумент е 64, така че ако пропуснем този аргумент, толкова битове ще бъдат проверени.
ИЗБЕРЕТЕ EXPORT_SET(9,1,0,'-');Резултат:
+------------------------------------------------------- -------------------------------------------------- ---------------------------------+| 1-0-0-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-0-0-0-0-0-0-0-0-0- 0-0-0-0-0-0-0-0-0-0-0-0-0-0 |+--------------------- -------------------------------------------------- -------------------------------------------------- --------+Това се подрязва безшумно до 64, така че ако предоставите стойност извън този диапазон, тя ще бъде подрязана до 64.
ИЗБЕРЕТЕ EXPORT_SET(9,1,0,'-',500);Резултат:
+------------------------------------------------------- -------------------------------------------------- ---------------------------------+| 1-0-0-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-0-0-0-0-0-0-0-0-0- 0-0-0-0-0-0-0-0-0-0-0-0-0-0 |+--------------------- -------------------------------------------------- -------------------------------------------------- --------+Това е цяло число без знак, така че резултатът е същият, ако използвате отрицателна стойност:
ИЗБЕРЕТЕ EXPORT_SET(9,1,0,'-',-4);Резултат:
+------------------------------------------------------- -------------------------------------------------- ---------------------------------+| 1-0-0-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-0-0-0-0-0-0-0-0-0- 0-0-0-0-0-0-0-0-0-0-0-0-0-0 |+--------------------- -------------------------------------------------- -------------------------------------------------- --------+Пример 5 – Използване на стойности по подразбиране
Можем да пропуснем последните два аргумента, за да използваме стойностите по подразбиране:
SELECT EXPORT_SET(9,'On','Off');Резултат:
+------------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------+| Вкл., Изкл., Изкл., Вкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изкл., Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен, Изключен |+--------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------------------+