602SQL-Úplná dokumentace Index  

Funkce CAST (SQL)

CAST (arg AS typ)

Funkce CAST provádí konverzi argumentu arg na zadaný typ.

(Pozor - funkce není totožná s přetypováním (angl. casting) ve vyšších programovacích jazycích.)

Při konverzi hodnoty na znakový řetězec nebo naopak není možné zvolit způsob formátování řetězce. Pokud to vadí, použijte specializovanou konverzní funkci jazyka 602SQL (např. Real2str).

Konverze typů pomocí funkce CAST (konverze explicitní) je silnější než automatická konverze v přiřazovacím příkazu SET (konverze implicitní).

Při provádění funkce může dojít k chybám trojího druhu:

Těmto chybám lze zabránit nastavením vhodných voleb ve funkci Set_sql_option (volba SQLOPT_MASK... (8,16,32)). Jsou-li tyto volby zapnuty, pak v prvních dvou případech je výsledkem hodnota NULL, ve třetím případě je řetězec seříznut zprava.

Není-li konverze proveditelná (např. DATE na INT), oznámí se to již při překladu.

Konverze delšího znakového řetězce na kratší řetězec se chápe jako prosté seříznutí zprava, neplatí zde výše uvedené poznámky o výjimkách.

Výsledkem konverze typu REAL na CHAR(n) je semilogaritmický tvar čísla (např. 1.2345E+4) s desetinným oddělovačem tečkou (pokud není vlastností serveru DecimalSeparator zvolen jiný oddělovač).

Výsledkem konverze typu DATE na CHAR(n) je tvar data 24.12.2002.

Výsledkem konverze typu TIME na CHAR(n) je tvar času 15:45:02.000

Výsledkem konverze typu TIMESTAMP na CHAR(n) je tvar data 24.12.2002 15:45:02.

Výsledkem konverze typu BINARY(n) na CHAR(2*n) je hexadecimální zápis binárního řetězce

Pro konverzi CHAR(n) na REAL platí pravidla pro konvertovatelný řetězec uvedená u funkce Str2real.

Příklad použití:

Přetypování výrazu z NUMERIC na INTEGER

SELECT Firmy.firma,CAST(SUM(Objednavky.objednavka) AS INT)
FROM Firmy, Objednavky
WHERE Objednavky.firma=Firmy.firma
GROUP BY Firmy.firma

Viz konverzní funkce jazyka použitelné v SQL:

Str2int, Str2bigint, Str2real, Str2date, Str2time, Str2timestamp, Int2str, Bigint2str, Real2str, Date2str, Time2str, Timestamp2str, Datetime2timestamp, Timestamp2date, Timestamp2time, Ord, Chr