W MariaDB, EXPORT_SET() jest wbudowaną funkcją ciągu, która zwraca ciąg, który odzwierciedla bity w określonej wartości. Za każdy bit ustawiony w określonej wartości otrzymujesz ciąg „włączony”, a za każdy bit nieustawiony w wartości otrzymujesz ciąg „wyłączony”.
Akceptuje co najmniej trzy argumenty plus dwa argumenty opcjonalne.
Składnia
Składnia wygląda tak:
EXPORT_SET(bits, on, off[, separator[, number_of_bits]]) Poniższa tabela zawiera wyjaśnienie tych argumentów.
bits | Wartość, dla której chcesz zwrócić wyniki. Podana jako liczba całkowita, ale jest konwertowana na bity. Za każdy bit ustawiony w tej wartości otrzymujesz on string, a za każdy bit, który nie jest ustawiony w wartości, otrzymujesz off ciąg. Bity są sprawdzane od prawej do lewej (od bitów niskiego rzędu do bitów wysokiego rzędu). |
on | Ciąg, który jest zwracany dla każdego na bity. |
off | Ciąg, który jest zwracany dla każdego off bity. |
separator | Opcjonalny argument, którego można użyć do określenia używanego separatora. Wartość domyślna to znak przecinka. Dlatego, jeśli nie określisz tego argumentu, przecinek zostanie użyty jako separator. |
number_of_bits | Liczba bitów do zbadania. Domyślna wartość to 64. Jeśli podasz większą wartość, zostanie ona po cichu przycięta do 64, jeśli jest większa niż 64. |
Przykład
Oto podstawowy przykład:
SELECT EXPORT_SET(13,'On','Off',',',4); Wynik:
+---------------------------------+ | EXPORT_SET(13,'On','Off',',',4) | +---------------------------------+ | On,Off,On,On | +---------------------------------+
Widzimy, że pierwszy, trzeci i czwarty bit są ustawione, ale drugi nie.
Możemy użyć BIN() funkcja zwracająca podobny wynik, ale w odwrotnej kolejności:
SELECT BIN(13); Wynik:
+---------+ | BIN(13) | +---------+ | 1101 | +---------+
BIN() funkcja zwraca ciąg reprezentujący wartość binarną danego longlonga. W tym przykładzie zwrócił trzy 1 s.
W naszym EXPORT_SET() na przykład określiliśmy, że on i off powinien być używany do reprezentowania 1 i 0 odpowiednio. Możemy to jednak zmienić (poniżej).
Również za pomocą EXPORT_SET() , ciągi są dodawane do wyniku od lewej do prawej. Dlatego wynik z EXPORT_SET() wygląda jak lustrzane odbicie wyniku z BIN() .
Zmień wartości włączania/wyłączania
Tutaj znowu, ale tym razem używamy innego ciągu dla on i off stany.
SELECT EXPORT_SET(7,'1','0',',',4); Wynik:
+-----------------------------+ | EXPORT_SET(7,'1','0',',',4) | +-----------------------------+ | 1,1,1,0 | +-----------------------------+
Tym razem używamy 1 i 0 , podobny do tego, co BIN() funkcja powraca, ale z dodanym separatorem (i odwróconym).
Zmień separator
Czwarty (opcjonalny) argument określa, jakiego separatora użyć. Tutaj jest z innym separatorem:
SELECT EXPORT_SET(7,'True','False','-',4); Wynik:
+------------------------------------+ | EXPORT_SET(7,'True','False','-',4) | +------------------------------------+ | True-True-True-False | +------------------------------------+
Zmień liczbę bitów do zbadania
Piąty (opcjonalny) argument określa liczbę bitów do zbadania. W poprzednich przykładach użyliśmy 4 jako liczby bitów do zbadania. Możemy to zwiększyć, jeśli chcemy:
SELECT EXPORT_SET(7,'1','0',',',10); Wynik:
+------------------------------+ | EXPORT_SET(7,'1','0',',',10) | +------------------------------+ | 1,1,1,0,0,0,0,0,0,0 | +------------------------------+
W takim przypadku wszystkie dodatkowe bity nie są ustawione. Zwiększmy wartość pierwszego argumentu, aby zobaczyć, jak wpływa to na wynik:
SELECT EXPORT_SET(172,'1','0',',',10); Wynik:
+--------------------------------+ | EXPORT_SET(172,'1','0',',',10) | +--------------------------------+ | 0,0,1,1,0,1,0,1,0,0 | +--------------------------------+
Wartości domyślne
Jak wspomniano, argumenty czwarty i piąty są opcjonalne. Gdy je pominiesz, zostaną użyte wartości domyślne.
Domyślna liczba bitów
Jeśli usuniemy ostatni argument, sprawdzane są 64 bity:
SELECT EXPORT_SET(172,'1','0',''); Wynik:
+------------------------------------------------------------------+ | EXPORT_SET(172,'1','0','') | +------------------------------------------------------------------+ | 0011010100000000000000000000000000000000000000000000000000000000 | +------------------------------------------------------------------+
W tym przypadku również usunąłem separator, aby dane wyjściowe były bardziej zwięzłe.
Domyślny separator
Możemy również usunąć argument separatora. Kiedy to zrobimy, EXPORT_SET() używa przecinka jako domyślnego separatora.
SELECT EXPORT_SET(123456789,'1','0'); Wynik:
+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+ | 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 | +---------------------------------------------------------------------------------------------------------------------------------+
Argumenty zerowe
Jeśli którykolwiek z argumentów jest null , wynik to 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"; Wynik:
+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | +------+------+------+------+------+ | NULL | NULL | NULL | NULL | NULL | +------+------+------+------+------+
Brakujące argumenty
Wywołanie EXPORT_SET() bez przekazania jakichkolwiek argumentów (lub z niewłaściwą liczbą argumentów) powoduje błąd:
SELECT EXPORT_SET(); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXPORT_SET'