sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer CONVERT() i MariaDB

I MariaDB, CONVERT() er en indbygget funktion, der konverterer en værdi til en anden datatype. Det tager en værdi af én type og returnerer en værdi af den angivne type.

Du angiver værdien som et argument, når du kalder funktionen, såvel som den type, du gerne vil have den konverteret til.

CONVERT() ligner CAST() .

Syntaks

CONVERT() funktion kan kaldes ved hjælp af ODBC-syntaks eller SQL92-syntaks.

ODBC-syntaks:

CONVERT(udtr., type) 

SQL92-syntaks:

CONVERT(udg. BRUGER tegnsæt) 

Hvor expr er den værdi, der skal konverteres, type er den datatype, du vil have den konverteret til.

Bruger SQL92-syntaksen, charset er det tegnsæt, du gerne vil have det konverteret til.

Eksempel

Her er et simpelt eksempel:

VÆLG KONVERT(123.45, INT); 

Resultat:

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

Dette konverterede værdien til et heltal, som fjernede decimalerne.

Her er et andet eksempel:

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

Resultat:

+--------------------------------+| KONVERTER('2020-01-01', DATOTIME) |+----------------------------------------+| 2020-01-01 00:00:00 |+----------------------------------------+

I dette tilfælde konverterede vi en streng til en DATETIME datatype.

Konverteringsfejl

I det foregående eksempel angav vi en gyldig DATE streng (eller DATE bogstavelig). Derfor var MariaDB i stand til at konvertere værdien til en DATETIME datatype.

Men her er, hvad der sker, når vi angiver en ugyldig DATE streng:

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

Resultat:

+--------------------------------------+| KONVERTER('1. jan. 2020', DATO) |+------------------------------------+| NULL |+-------------------------------------+

Her kunne MariaDB ikke finde ud af at konvertere denne værdi og returnerede NULL .

I dette tilfælde kunne vi bruge en anden funktion, såsom STR_TO_DATE() for at udføre en sådan konvertering:

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

Resultat:

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

Angiv et tegnsæt

SQL92-syntaksen giver os mulighed for at angive et tegnsæt, der skal konverteres til.

Eksempel:

VÆLG KONVERTER('ไม้เมือง' BRUGER tis620); 

Resultat:

+---------------------------------------------- ----+| KONVERTER('ไม้เมือง' VED HJÆLP AF tis620) |+--------------------------------------- -----------+| ไม้เมือง |+-------------------------------------------------------- ----+

Ændring af tegnsættet vil også ændre sorteringen til at være standardsorteringen for det pågældende tegnsæt.

Ovenstående eksempel viser ikke rigtig, hvordan tegnsættet/sorteringen har ændret sig.

Heldigvis kan vi bruge funktioner såsom CHARSET() og SAMLING() for at se, hvordan tegnsættet og sorteringen har ændret sig:

meget BRUGER tis620)) AS d;

Resultat:

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

Den første bruger tegnsættet og sorteringen til min forbindelse. Den anden bruger det tegnsæt, som vi eksplicit specificerede med CONVERT() , samt standardsorteringen for det pågældende tegnsæt.

Se denne liste over sorteringer, der er tilgængelige i MariaDB for en komplet liste over sorteringer og deres matchende tegnsæt.

Nul-argumenter

Forsøger at konvertere null returnerer null :

VÆLG KONVERT(nul, DATOTIME); 

Resultat:

+------------------------+| KONVERTER(nul, DATOTIME) |+-------------------------+| NULL |+-------------------------+

Men sender null uden at angive den nye datatype resulterer det i en syntaksfejl:

SELECT CONVERT(null); 

Resultat:

FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks til brug i nærheden af ​​')' på linje 1

Manglende argument

Kalder CONVERT() uden at sende et argument resulterer det i en syntaksfejl:

VÆLG KONVERT(); 

Resultat:

FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MariaDB-serverversion for den rigtige syntaks til brug i nærheden af ​​')' på linje 1

  1. i postgres, kan du indstille standardformateringen for et tidsstempel, efter session eller globalt?

  2. Erstat en streng med en anden streng i SQL Server (T-SQL)

  3. Oracle erklæring

  4. Skaleringsløsninger til MySQL (replikering, klyngedannelse)