MySQL EXPORT_SET()
funkcja zwraca łańcuch, który reprezentuje bity w liczbie.
Masz możliwość dostosowania sposobu, w jaki funkcja wyprowadza ciąg. Funkcja akceptuje szereg argumentów, które pozwalają to zrobić. Kiedy wywołujesz funkcję, podajesz odpowiednią liczbę, a także argumenty określające sposób wyświetlania wyników.
Składnia
Składnia wygląda tak:
EXPORT_SET(bits,on,off[,separator[,number_of_bits]])
Oto wyjaśnienie argumentów:
- bity
- To jest numer, dla którego chcesz zwrócić wyniki. 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 strunowy. Bity są sprawdzane od prawej do lewej (od bitów niskiego rzędu do bitów wysokiego rzędu).
- na
- To jest zwracane za każdy w bity.
- wył
- To jest zwracane za każdą off bity.
- separator
- Jest to opcjonalny argument, którego można użyć do określenia separatora, który ma zostać użyty. Wartość domyślna to znak przecinka. Dlatego, jeśli nie określisz tego argumentu, przecinek zostanie użyty jako separator.
- liczba_bitów
- 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 1 – Podstawowe użycie
Oto przykład demonstrujący podstawowe użycie tej funkcji.
SELECT EXPORT_SET(9,'On','Off',',',4);
Wynik:
+--------------------------------+ | EXPORT_SET(9,'On','Off',',',4) | +--------------------------------+ | On,Off,Off,On | +--------------------------------+
Aby zrozumieć ten wynik, musimy zrozumieć, w jaki sposób liczba 9
jest reprezentowany w bitach. Aby to zrobić, możemy użyć BIN()
funkcja do wyprowadzania binarnej reprezentacji liczby 9.
SELECT BIN(9);
Wynik:
+--------+ | BIN(9) | +--------+ | 1001 | +--------+
Widzimy więc, że binarna reprezentacja 9 to 1001
. Każdy 1
jest na bit (jest ustawiony) i każdy 0
jest wyłączony bit (nie jest ustawiony).
Przykład 2 – zmiana drugiego i trzeciego argumentu
Możemy wziąć poprzedni przykład i zmienić drugi i trzeci argument.
SELECT EXPORT_SET(9,'Y','N',',',4);
Wynik:
+-----------------------------+ | EXPORT_SET(9,'Y','N',',',4) | +-----------------------------+ | Y,N,N,Y | +-----------------------------+
Więc teraz dla każdego na trochę, otrzymujemy Y , a każdy wyłączony bit zwraca N .
Moglibyśmy nawet to zmienić, aby zwracane były jedynek i zera:
SELECT EXPORT_SET(9,1,0,',',4);
Wynik:
+-------------------------+ | EXPORT_SET(9,1,0,',',4) | +-------------------------+ | 1,0,0,1 | +-------------------------+
Przykład 3 – zmiana czwartego argumentu (separatora)
W poprzednich przykładach wyraźnie określiliśmy przecinek jako separator. Jest to również wartość domyślna.
W razie potrzeby możemy zmienić separator na inny.
SELECT EXPORT_SET(9,1,0,'-',4);
Wynik:
+-------------------------+ | EXPORT_SET(9,1,0,'-',4) | +-------------------------+ | 1-0-0-1 | +-------------------------+
A oto, co się stanie, jeśli jako separatora określimy pusty ciąg:
SELECT EXPORT_SET(9,1,0,'',4);
Wynik:
+------------------------+ | EXPORT_SET(9,1,0,'',4) | +------------------------+ | 1001 | +------------------------+
Przykład 4 – zmiana piątego argumentu
Piąty argument określa liczbę bitów do zbadania. W poprzednim przykładzie użyliśmy 4
jako wartość, więc zbadano (i zwrócono) tylko cztery bity. Możemy to zwiększyć lub zmniejszyć zgodnie z wymaganiami, podając inną wartość jako czwarty argument.
SELECT EXPORT_SET(9,1,0,'-',10);
Wynik:
+--------------------------+ | EXPORT_SET(9,1,0,'-',10) | +--------------------------+ | 1-0-0-1-0-0-0-0-0-0 | +--------------------------+
W tym przykładzie zwiększyliśmy liczbę zbadanych bitów do 10.
Pamiętaj, że bity są sprawdzane od prawej do lewej, więc dodatkowe zera w tym przykładzie są w rzeczywistości zerami wyższego rzędu. Jest więc w odwrotnej kolejności do rzeczywistej reprezentacji binarnej.
Oto przykład pokazujący, co mam na myśli:
SELECT BIN(567), EXPORT_SET(567,1,0,'',10);
Wynik:
+------------+---------------------------+ | BIN(567) | EXPORT_SET(567,1,0,'',10) | +------------+---------------------------+ | 1000110111 | 1110110001 | +------------+---------------------------+
W tym przypadku wyglądają jak lustrzane odbicia. Zasadniczo wynik EXPORT_SET()
jest w odwrotnej kolejności do BIN()
.
Domyślna wartość piątego argumentu to 64, więc jeśli pominiemy ten argument, tyle bitów zostanie zbadanych.
SELECT EXPORT_SET(9,1,0,'-');
Wynik:
+---------------------------------------------------------------------------------------------------------------------------------+ | 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 | +---------------------------------------------------------------------------------------------------------------------------------+
Jest to po cichu obcinane do 64, więc jeśli podasz wartość spoza tego zakresu, zostanie ona obcięta do 64.
SELECT EXPORT_SET(9,1,0,'-',500);
Wynik:
+---------------------------------------------------------------------------------------------------------------------------------+ | 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 | +---------------------------------------------------------------------------------------------------------------------------------+
Jest to liczba całkowita bez znaku, więc ten sam wynik, jeśli użyjesz wartości ujemnej:
SELECT EXPORT_SET(9,1,0,'-',-4);
Wynik:
+---------------------------------------------------------------------------------------------------------------------------------+ | 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 | +---------------------------------------------------------------------------------------------------------------------------------+
Przykład 5 – Używanie wartości domyślnych
Możemy pominąć dwa ostatnie argumenty, aby użyć wartości domyślnych:
SELECT EXPORT_SET(9,'On','Off');
Wynik:
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | On,Off,Off,On,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+