MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как работи CONVERT() в MariaDB

В MariaDB, CONVERT() е вградена функция, която преобразува стойност в друг тип данни. Приема стойност от един тип и връща стойност от посочения тип.

Вие предоставяте стойността като аргумент, когато извиквате функцията, както и типа, в който искате да се преобразува.

CONVERT() е подобен на CAST() .

Синтаксис

CONVERT() функцията може да бъде извикана с помощта на ODBC синтаксис или SQL92 синтаксис.

Синтаксис на ODBC:

CONVERT(expr, type) 

Синтаксис на SQL92:

CONVERT(expr USING charset) 

Където expr е стойността за преобразуване, type е типът данни, към който искате да се преобразува.

Използвайки синтаксиса на SQL92, charset е наборът от знаци, в който искате да бъде преобразуван.

Пример

Ето един прост пример:

SELECT CONVERT(123.45, INT); 

Резултат:

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

Това преобразува стойността в цяло число, което премахва десетичните знаци.

Ето още един пример:

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

Резултат:

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

В този случай преобразувахме низ в DATETIME тип данни.

Неуспешно преобразуване

В предишния пример предоставихме валидна DATE низ (или DATE буквално). Следователно MariaDB успя да преобразува стойността в DATETIME тип данни.

Ето какво се случва обаче, когато предоставим невалидна DATE низ:

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

Резултат:

+------------------------------+| CONVERT('1 януари 2020 г., ДАТА) |+------------------------------+| NULL |+------------------------------+

Тук MariaDB не можа да разбере как да преобразува тази стойност и върна NULL .

В този случай бихме могли да използваме друга функция, като STR_TO_DATE() за да извършите такова преобразуване:

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

Резултат:

+-----------------------------------+| STR_TO_DATE('1 януари 2020 г.', '%e %M, %Y') |+---------------------------- ------------+| 2020-01-01 |+-------------------------------------------------+ 

Посочете набор от знаци

Синтаксисът на SQL92 ни позволява да посочим набор от знаци, в който да конвертираме.

Пример:

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

Резултат:

+------------------------------------------------------- ----+| CONVERT('ไม้เมือง' ИЗПОЛЗВАНЕ tis620) |+--------------------------------------- -----------+| ไม้เมือง |+---------------------------------------------- ----+

Промяната на набора от знаци също ще промени съпоставянето да бъде съпоставянето по подразбиране за този набор от знаци.

Горният пример всъщност не демонстрира как се е променил наборът от знаци/колекцията.

За щастие можем да използваме функции като CHARSET() и COLLATION() за да видите как са се променили наборът от знаци и сортирането:

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

Резултат:

+------+----------------+--------+------------ ----+| а | б | в | г |+------+----------------+--------+------------ ---+| utf8 | utf8_general_ci | tis620 | tis620_thai_ci |+------+-----------------+--------+------------ ---+

Първият използва набора от знаци и сортиране за моята връзка. Вторият използва набора от знаци, който изрично посочихме с CONVERT() , както и съпоставянето по подразбиране за този набор от знаци.

Вижте този списък със съпоставяния, налични в MariaDB, за пълен списък на съпоставянията и съответстващите им набори от знаци.

Нулеви аргументи

Опитвам се да преобразувам null връща null :

SELECT CONVERT(null, DATETIME); 

Резултат:

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

Въпреки това, подаване на null без уточняване на новия тип данни води до синтактична грешка:

SELECT CONVERT(null); 

Резултат:

ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 1

Липсващ аргумент

Извикване на CONVERT() без подаване на аргумент води до синтактична грешка:

SELECT CONVERT(); 

Резултат:

ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 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. MariaDB Именувани команди

  2. Как работи SQRT() в MariaDB

  3. Как работи DEGREES() в MariaDB

  4. Как YEARWEEK() работи в MariaDB

  5. Как работи MONTH() в MariaDB