MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak działa funkcja EXPORT_SET() w MariaDB

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'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co nowego w MariaDB 10.6

  2. Jak działa ASIN() w MariaDB

  3. Przygotowanie serwera MySQL lub MariaDB do produkcji — część druga

  4. Funkcje numeryczne MariaDB (pełna lista)

  5. Jak odjąć minuty od wartości daty i godziny w MariaDB?