Conversie (MySQL)

Uit De Vliegende Brigade
(Doorverwezen vanaf Datatypen & conversie (MySQL))
Ga naar: navigatie, zoeken

Decimaal naar integer - floor

floor(decimaal)

Bv.:

select floor(1.23);

1

Text naar decimaal - cast

Bv.:

> select cast("2.15" as decimal(3,2));
2.15

> select cast("2.15" as decimal(3,2))+1;
3.15

> select cast("blub" as decimal(3,2));   # Werkt dus ook voor textuele input - zonder foutmelding!
0

> select cast("blub" as decimal(3,2))+1;
1

> select cast("4.27 / 8.23" as decimal(3,2));
4.27

> select cast("4.27 / 8.23" as decimal(3,2))+1;
5.27

Text naar decimaal - Truncated value-foutmelding

In maart 2018 had ik de situatie dat dit wel werkt: select cast("4.27 / 8.23" as decimal(3,2));, maar dat dat een foutmelding gaf, als ik dit in een sproc probeerde:

Error Code: 1292. Truncated incorrect DECIMAL value: '4.27 / 8.23'	1,251 sec

Volgens [1] is dit een strict sql-foutmelding: Sommige dingen mogen dan niet.

Oplossing (naast aanpassing strict sql-modules): Gebruik ignore keyword:

update ignore dimensions_tmp
set dim1_mm_period_num = cast(dim1_mm_period_txt as decimal(5,2));

Bronnen