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

Jak działa funkcja CONVERT() w MariaDB

W MariaDB CONVERT() to wbudowana funkcja, która konwertuje wartość na inny typ danych. Pobiera wartość jednego typu i zwraca wartość określonego typu.

Podajesz wartość jako argument podczas wywoływania funkcji, a także typ, na który chcesz ją przekonwertować.

CONVERT() jest podobny do CAST() .

Składnia

CONVERT() funkcja może być wywołana przy użyciu składni ODBC lub składni SQL92.

Składnia ODBC:

CONVERT(expr, type)

Składnia SQL92:

CONVERT(expr USING charset)

Gdzie expr jest wartością do konwersji, type to typ danych, na który chcesz go przekonwertować.

Używając składni SQL92, charset to zestaw znaków, na który chcesz go przekonwertować.

Przykład

Oto prosty przykład:

SELECT CONVERT(123.45, INT);

Wynik:

+----------------------+
| CONVERT(123.45, INT) |
+----------------------+
|                  123 |
+----------------------+

Spowodowało to przekształcenie wartości na liczbę całkowitą, która usunęła miejsca dziesiętne.

Oto kolejny przykład:

SELECT CONVERT('2020-01-01', DATETIME);

Wynik:

+---------------------------------+
| CONVERT('2020-01-01', DATETIME) |
+---------------------------------+
| 2020-01-01 00:00:00             |
+---------------------------------+

W tym przypadku przekonwertowaliśmy ciąg na DATETIME typ danych.

Niepowodzenie konwersji

W poprzednim przykładzie podaliśmy prawidłową DATE ciąg (lub DATE dosłowny). Dlatego MariaDB była w stanie przekonwertować wartość na DATETIME typ danych.

Oto jednak, co się dzieje, gdy podamy nieprawidłową DATE ciąg:

SELECT CONVERT('1 Jan, 2020', DATE);

Wynik:

+------------------------------+
| CONVERT('1 Jan, 2020', DATE) |
+------------------------------+
| NULL                         |
+------------------------------+

W tym przypadku MariaDB nie mogła dowiedzieć się, jak przekonwertować tę wartość i zwróciła NULL .

W tym przypadku moglibyśmy użyć innej funkcji, takiej jak STR_TO_DATE() aby wykonać taką konwersję:

SELECT STR_TO_DATE('1 Jan, 2020', '%e %M, %Y');

Wynik:

+-----------------------------------------+
| STR_TO_DATE('1 Jan, 2020', '%e %M, %Y') |
+-----------------------------------------+
| 2020-01-01                              |
+-----------------------------------------+

Określ zestaw znaków

Składnia SQL92 pozwala nam określić zestaw znaków do konwersji.

Przykład:

SELECT CONVERT('ไม้เมือง' USING tis620);

Wynik:

+--------------------------------------------------+
| CONVERT('ไม้เมือง' USING tis620)                   |
+--------------------------------------------------+
| ไม้เมือง                                           |
+--------------------------------------------------+

Zmiana zestawu znaków spowoduje również zmianę sortowania tak, aby było sortowaniem domyślnym dla tego zestawu znaków.

Powyższy przykład tak naprawdę nie pokazuje, jak zmienił się zestaw znaków/porównanie.

Na szczęście możemy użyć funkcji takich jak CHARSET() i COLLATION() aby zobaczyć, jak zmienił się zestaw znaków i sortowanie:

SELECT 
    CHARSET('ไม้เมือง') AS a,
    COLLATION('ไม้เมือง') AS b,
    CHARSET(CONVERT('ไม้เมือง' USING tis620)) AS c,
    COLLATION(CONVERT('ไม้เมือง' USING tis620)) AS d;

Wynik:

+------+-----------------+--------+----------------+
| a    | b               | c      | d              |
+------+-----------------+--------+----------------+
| utf8 | utf8_general_ci | tis620 | tis620_thai_ci |
+------+-----------------+--------+----------------+

Pierwszy używa zestawu znaków i sortowania do mojego połączenia. Drugi używa zestawu znaków, który wyraźnie określiliśmy za pomocą CONVERT() , a także domyślne sortowanie dla tego zestawu znaków.

Zobacz tę listę sortowań dostępnych w MariaDB, aby uzyskać pełną listę sortowań i pasujących do nich zestawów znaków.

Argumenty zerowe

Próbuję przekonwertować null zwraca null :

SELECT CONVERT(null, DATETIME);

Wynik:

+-------------------------+
| CONVERT(null, DATETIME) |
+-------------------------+
| NULL                    |
+-------------------------+

Jednak przekazanie null bez określenia nowego typu danych powoduje błąd składni:

SELECT CONVERT(null);

Wynik:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Brakujący argument

Wywołanie CONVERT() bez przekazania argumentu powoduje błąd składni:

SELECT CONVERT();

Wynik:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak SYSDATE() działa w MariaDB

  2. Jak GET_FORMAT() działa w MariaDB

  3. Uruchamianie klastra MariaDB Galera bez narzędzi do orkiestracji — Zarządzanie kontenerami DB:część druga

  4. Porównanie ofert Galera Cluster Cloud:część druga Google Cloud Platform (GCP)

  5. Jak TIME_TO_SEC() działa w MariaDB