CAST converte o valor de um tipo de dado para outro, e fornece tipo de dado para o par??metro din??mico (?) e para o valor NULL.
As express??es CAST s??o permitidas em qualquer lugar onde uma express??o ?? permitida.
CAST ( [ Express??o | NULL | ? ] AS TipoDado)
O tipo de dado para o qual a express??o est?? sendo convertida ?? o tipo de destino. O tipo de dado da express??o a partir da qual est?? sendo feita a convers??o ?? o tipo de origem.
Tipos | S |
I |
B |
D |
R |
D |
F |
C |
V |
L |
C |
V |
L |
C |
B |
D |
T |
T |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SMALLINT | S | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - |
INTEGER | S | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - |
BIGINT | S | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - |
DECIMAL | S | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - |
REAL | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
DOUBLE | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
FLOAT | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
CHAR | S | S | S | S | - | - | - | S | S | S | - | - | - | S | - | S | S | S |
VARCHAR | S | S | S | S | - | - | - | S | S | S | - | - | - | S | - | S | S | S |
LONG VARCHAR | - | - | - | - | - | - | - | S | S | S | - | - | - | S | - | - | - | - |
CHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | S | S | S | - | - | - |
VARCHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | S | S | S | - | - | - |
LONG VARCHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | S | S | S | - | - | - |
CLOB | - | - | - | - | - | - | - | S | S | S | - | - | - | S | - | - | - | - |
BLOB | - | - | - | - | - | - | - | - | - | - | - | - | - | - | S | - | - | - |
DATE | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | S | - | S |
TIME | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | - | S | S |
TIME STAMP | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | S | S | S |
Se a convers??o for v??lida, ent??o CAST ser?? permitida. Incompatibilidades de tamanhos entre os tipos de origem e de destino podem causar erros em tempo de execu????o.
Um tipo num??rico pode ser convertido para qualquer outro tipo num??rico. Se o tipo de destino n??o puder representar o componente n??o-fracion??rio sem truncamento, ser?? lan??ada uma excess??o. Se o destino num??rico n??o puder representar o componente fracion??rio (escala) da origem num??rica, ent??o a origem ser?? truncada em sil??ncio para caber no destino. Por exemplo, converter 763.1234 para INTEGER tem como resultado 763.
As cadeias de bits podem ser convertidas para outras cadeias de bits, mas n??o para cadeias de caracteres. As cadeias que s??o convertidas para cadeias de bits s??o preenchidas com zero no final, para se ajustarem ao tamanho da cadeia de bits do destino. O tipo BLOB ?? mais limitado, e requer convers??o expl??cita. Na maioria dos casos o tipo BLOB n??o pode ser convertido de, ou para, outros tipos.
Um valor data/hora sempre pode ser convertido de e para TIMESTAMP. Se DATE for convertido para TIMESTAMP, o componente TIME do TIMESTAMP resultante ser?? sempre 00:00:00. Se um valor de dado TIME for convertido para TIMESTAMP, o componente DATE de TIMESTAMP ser?? definido como o valor de CURRENT_DATE do momento da execu????o de CAST. Se TIMESTAMP for convertido para DATE, o componente TIME ser?? truncado em sil??ncio. Se TIMESTAMP for convertido para TIME, o componente DATE ser?? truncado em sil??ncio.
SELECT CAST (MILHAS AS INT) FROM V??OS -- converter de carimbo do tempo para texto INSERT INTO MINHA_TABELA (COLUNA_TEXTO) VALUES (CAST (CURRENT_TIMESTAMP AS VARCHAR(100))) -- NULL deve ser convertido para algum tipo de dado para poder ser usado SELECT LINHA_A??REA FROM LINHAS_A??REAS UNION ALL VALUES (CAST (NULL AS CHAR(2))) -- convers??o de precis??o dupla para decimal SELECT CAST (TEMPO_V??O AS DECIMAL(5,2)) FROM V??OS -- convers??o de SMALLINT para BIGINT VALUES CAST (CAST (12 AS SMALLINT) AS BIGINT)