sql >> Databáze >  >> RDS >> MariaDB

Jak CONVERT() funguje v MariaDB

V MariaDB CONVERT() je vestavěná funkce, která převádí hodnotu na jiný datový typ. Převezme hodnotu jednoho typu a vrátí hodnotu zadaného typu.

Hodnotu zadáte jako argument při volání funkce a také typ, na který ji chcete převést.

CONVERT() je podobný CAST() .

Syntaxe

CONVERT() funkci lze volat pomocí syntaxe ODBC nebo syntaxe SQL92.

Syntaxe ODBC:

CONVERT(expr, type) 

Syntaxe SQL92:

CONVERT(expr USING charset) 

Kde expr je hodnota, která se má převést, type je datový typ, na který jej chcete převést.

Pomocí syntaxe SQL92 charset je znaková sada, na kterou ji chcete převést.

Příklad

Zde je jednoduchý příklad:

SELECT CONVERT(123.45, INT); 

Výsledek:

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

Tím byla hodnota převedena na celé číslo, čímž byla odstraněna desetinná místa.

Zde je další příklad:

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

Výsledek:

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

V tomto případě jsme převedli řetězec na DATETIME datový typ.

Selhání konverze

V předchozím příkladu jsme poskytli platné DATE řetězec (nebo DATE doslovný). MariaDB tedy dokázala převést hodnotu na DATETIME datový typ.

Co se však stane, když poskytneme neplatné DATE řetězec:

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

Výsledek:

+------------------------------+| CONVERT('1. ledna 2020', DATUM) |+------------------------------+| NULL |+------------------------------+

Zde MariaDB nedokázala zjistit, jak tuto hodnotu převést, a vrátila NULL .

V tomto případě bychom mohli použít jinou funkci, například STR_TO_DATE() k provedení takové konverze:

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

Výsledek:

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

Určení znakové sady

Syntaxe SQL92 nám umožňuje zadat znakovou sadu, na kterou se má převést.

Příklad:

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

Výsledek:

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

Změnou znakové sady se také změní řazení na výchozí řazení pro danou znakovou sadu.

Výše uvedený příklad ve skutečnosti nedemonstruje, jak se znaková sada/kompletace změnila.

Naštěstí můžeme použít funkce jako CHARSET() a COLLATION() abyste viděli, jak se změnila znaková sada a řazení:

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

Výsledek:

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

První používá znakovou sadu a řazení pro mé připojení. Druhý používá znakovou sadu, kterou jsme výslovně specifikovali pomocí CONVERT() , stejně jako výchozí řazení pro danou znakovou sadu.

Podívejte se na tento seznam porovnávání dostupných v MariaDB, kde najdete úplný seznam porovnávání a jejich odpovídající znakové sady.

Nulové argumenty

Pokus o převod null vrátí null :

SELECT CONVERT(null, DATETIME); 

Výsledek:

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

Nicméně předání null bez zadání nového datového typu dojde k chybě syntaxe:

SELECT CONVERT(null); 

Výsledek:

ERROR 1064 (42000):Máte chybu v syntaxi SQL; podívejte se do manuálu, který odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi blízko ')' na řádku 1

Chybí argument

Volání CONVERT() bez předání argumentu dojde k chybě syntaxe:

SELECT CONVERT(); 

Výsledek:

ERROR 1064 (42000):Máte chybu v syntaxi SQL; podívejte se do manuálu, který odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi blízko ')' na řádku 1

  1. Jak povolit pomalé dotazy MySQL Přihlaste se do MySQL

  2. Je možné vydat příkaz SELECT z bloku PL/SQL?

  3. Typy dat SQLite

  4. Jak převést číslo na řetězec v Oracle?