12345678910111213141516171819202122232425262728293031323334353637383940 |
- --------------------
- -- Explicit casts --
- --------------------
- $strs = AsList("-1", "0", "1", "2.4", "99.77", "999.5", "-7777");
- $data = ListMap($strs, ($str) -> { return AsStruct($str as str); });
- SELECT
- dataset.*,
- -- Changing range
- CAST(dec_3_1 AS Decimal(5, 1)) AS upcast_3_1,
- CAST(dec_5_2 AS Decimal(4, 2)) AS downcast_5_2,
-
- -- Changing precision
- CAST(dec_5_2 AS Decimal(3, 0)) AS rounded_5_2,
- CAST(dec_7_0 AS Decimal(9, 2)) AS extended_7_0,
- -- Combinations
- CAST(dec_5_2 AS Decimal(6, 0)) AS upcast_rounded_5_2,
- CAST(dec_3_1 AS Decimal(7, 3)) AS upcast_extended_3_1,
- CAST(dec_5_2 AS Decimal(3, 1)) AS downcast_rounded_5_2,
- CAST(dec_7_0 AS Decimal(5, 2)) AS downcast_extended_7_0
- FROM (
- SELECT
- str AS a_str,
- CAST(str AS Decimal(3, 1)) AS dec_3_1,
- CAST(str AS Decimal(5, 2)) AS dec_5_2,
- CAST(str AS Decimal(7, 0)) AS dec_7_0
- FROM AS_TABLE($data)
- ) as dataset;
- --------------------
- -- Implicit cast --
- --------------------
- $lambda = ($big_dec) -> { return $big_dec; };
- $func = Callable(Callable<(Decimal(10, 5))->Decimal(10, 5)>, $lambda);
- $small_dec = Decimal("3.0", 2, 1);
- SELECT $func($small_dec);
|