TRUNC (number) UDF
Description
The
TRUNC(number) function returnsn1truncated ton2decimal places. Ifn2is omitted, thenn1is truncated to 0 places.n2can be negative to truncate (make zero)n2digits left of the decimal point. (Oracle TRUNC(number) SQL Language Reference)
TRUNC(n1 [, n2 ])TRUNC_UDF for numeric values will be added to handle cases where the first column has an unrecognized data type.
Example:
SELECT TRUNC(column1) FROM DUAL;If the definition of column1 was not provided to the tool. Then the TRUNC_UDF will be added and in execution time, the overload of TRUNC_UDF will handle the case if it is a numeric or a date type.
Please refer to TRUNC (DATE) section.
The following sections provide the proof that TRUNC_UDF will handle perfectly numeric values.
Custom UDF overloads
TRUNC_UDF(n1)
It calls Snowflake TRUNC function with the input number. This overload exists in order to handle the different types of parameter scenarios, in case that information is not available during the migration.
Parameters
INPUT: The
NUMBERthat needs to be truncated.
CREATE OR REPLACE FUNCTION PUBLIC.TRUNC_UDF(INPUT NUMBER)
RETURNS INT
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
TRUNC(INPUT)
$$;Oracle
--TRUNC(NUMBER)
SELECT
TRUNC ( 1.000001 ),
TRUNC ( 15.79 ),
TRUNC ( -975.975 ),
TRUNC ( 135.135 )
FROM DUAL;Snowflake
--TRUNC(NUMBER)
SELECT
TRUNC ( 1.000001 ),
TRUNC ( 15.79 ),
TRUNC ( -975.975 ),
TRUNC ( 135.135 )
FROM DUAL;TRUNC_UDF(n1, n2)
It calls Snowflake TRUNC function with the input number and the scale. This overload exists in order to handle the different types of parameter scenarios, in case that information is not available during the migration.
Parameters
INPUT: The
NUMBERthat needs to be truncated.SCALE: Represents the number of digits the output will include after the decimal point.
CREATE OR REPLACE FUNCTION PUBLIC.TRUNC_UDF(INPUT NUMBER, SCALE NUMBER)
RETURNS INT
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
TRUNC(INPUT, SCALE)
$$;Oracle
--TRUNC(NUMBER, SCALE)
SELECT
TRUNC ( 1.000001, -2 ),
TRUNC ( 1.000001, -1 ),
TRUNC ( 1.000001, 0 ),
TRUNC ( 1.000001, 1 ),
TRUNC ( 1.000001, 2 ),
TRUNC ( 15.79, -2),
TRUNC ( 15.79, -1),
TRUNC ( 15.79, 0),
TRUNC ( 15.79, 1 ),
TRUNC ( 15.79, 50 ),
TRUNC ( -9.6, -2 ),
TRUNC ( -9.6, -1 ),
TRUNC ( -9.6, 0 ),
TRUNC ( -9.6, 1 ),
TRUNC ( -9.6, 2 ),
TRUNC ( -975.975, -3 ),
TRUNC ( -975.975, -2 ),
TRUNC ( -975.975, -1 ),
TRUNC ( -975.975, 0 ),
TRUNC ( -975.975, 1 ),
TRUNC ( -975.975, 2 ),
TRUNC ( -975.975, 3 ),
TRUNC ( -975.975, 5 ),
TRUNC ( 135.135, -10 ),
TRUNC ( 135.135, -2 ),
TRUNC ( 135.135, 0 ),
TRUNC ( 135.135, 1 ),
TRUNC ( 135.135, 2 ),
TRUNC ( 135.135, 3 ),
TRUNC ( 135.135, 5 )
FROM DUAL;Snowflake
--TRUNC(NUMBER, SCALE)
SELECT
TRUNC ( 1.000001, -2 ),
TRUNC ( 1.000001, -1 ),
TRUNC ( 1.000001, 0 ),
TRUNC ( 1.000001, 1 ),
TRUNC ( 1.000001, 2 ),
TRUNC ( 15.79, -2),
TRUNC ( 15.79, -1),
TRUNC ( 15.79, 0),
TRUNC ( 15.79, 1 ),
TRUNC ( 15.79, 50 ),
TRUNC ( -9.6, -2 ),
TRUNC ( -9.6, -1 ),
TRUNC ( -9.6, 0 ),
TRUNC ( -9.6, 1 ),
TRUNC ( -9.6, 2 ),
TRUNC ( -975.975, -3 ),
TRUNC ( -975.975, -2 ),
TRUNC ( -975.975, -1 ),
TRUNC ( -975.975, 0 ),
TRUNC ( -975.975, 1 ),
TRUNC ( -975.975, 2 ),
TRUNC ( -975.975, 3 ),
TRUNC ( -975.975, 5 ),
TRUNC ( 135.135, -10 ),
TRUNC ( 135.135, -2 ),
TRUNC ( 135.135, 0 ),
TRUNC ( 135.135, 1 ),
TRUNC ( 135.135, 2 ),
TRUNC ( 135.135, 3 ),
TRUNC ( 135.135, 5 )
FROM DUAL;Known Issues
No issues were found.
Related EWIs
No related EWIs.
Last updated
