Re: to append zeroes to left of a value

Re: to append zeroes to left of a value

 

  

Chiranjeev Mukherjee wrote:
> I have a Numeric field ARTICLE_NBR of length 9.
> Some of the articles are of length less than 9.
> Suppose mys article no is : 123456
> In my output I need it as : 000123456.

Here's a udf I've written for this.


DROP FUNCTION zeropad
@
CREATE FUNCTION zeropad (arg_val INTEGER, arg_len INTEGER)
RETURNS VARCHAR(20)
LANGUAGE SQL
CONTAINS SQL
NO EXTERNAL ACTION
DETERMINISTIC
BEGIN ATOMIC
DECLARE arg_val_char VARCHAR(20);
DECLARE arg_val_pad VARCHAR(20);
DECLARE arg_val_len INT;

--METHOD #1:
SET arg_val_char = RIGHT(DIGITS(arg_val),arg_len);

--METHOD #2:
--SET arg_val_len = LENGTH(arg_val_char);
--SET arg_val_pad = CONCAT(LEFT('0000000000',
-- (arg_len - arg_val_len)), arg_val_char);

RETURN arg_val_pad;
END
@


usage:

select zeropad(test_id,9)
from dim_test
fetch first 50 rows only

0000000026
0000000027
0000000028
0000000029
0000000030
0000000031
0000000032
0000000033
0000000034


Regards,

Ken

DB2 & UDB email list listserv db2-l LazyDBA home page