Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

Converting field from char to number

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DB2
View previous topic :: :: View next topic  
Author Message
danylele74

New User


Joined: 03 Jul 2014
Posts: 27
Location: Italy

PostPosted: Tue Mar 29, 2016 4:24 pm    Post subject: Converting field from char to number
Reply with quote

Hi all,

i need to convert a field of a table from char to number with a SELECT statement.

Input field (char 20):

Code:
'7                   '
'24                  '
'155                 '
'3876                '
'74567               '


Output field

Code:
00007
00024
00155
03876
74567


I need ONLY the first five digits.

Thank you
Back to top
View user's profile Send private message

danylele74

New User


Joined: 03 Jul 2014
Posts: 27
Location: Italy

PostPosted: Tue Mar 29, 2016 4:52 pm    Post subject:
Reply with quote

I have found this:

Code:
SELECT RIGHT(REPEAT('0', 5) || RTRIM(CHAR(table_field)), 5)


it seems to work but only if the input field (CHAR) there are numbers, otherwise .....
Back to top
View user's profile Send private message
danylele74

New User


Joined: 03 Jul 2014
Posts: 27
Location: Italy

PostPosted: Tue Mar 29, 2016 4:55 pm    Post subject:
Reply with quote

The maximun output length is 5 (five) digits.
Back to top
View user's profile Send private message
Marso

REXX Moderator


Joined: 13 Mar 2006
Posts: 1231
Location: Israel

PostPosted: Tue Mar 29, 2016 4:58 pm    Post subject:
Reply with quote

If you are sure that you have only numbers and spaces in this column, you can try:
Code:
INT(YOUR_CHAR_COLUMN)

(Instead of INT you can use BIGINT or DEC).
In all cases, there are restrictions:
Quote:
The string must contain a valid string representation of a number.
Leading and trailing blanks are eliminated and the resulting string must conform to the rules for forming an integer constant.
Once it works, try:
Code:
DIGITS(INT(YOUR_CHAR_COLUMN))

and then
Code:
SUBSTR(DIGITS(INT(YOUR_CHAR_COLUMN)),6,5)
Back to top
View user's profile Send private message
Rohit Umarjikar

Senior Member


Joined: 21 Sep 2010
Posts: 1720
Location: NY,USA

PostPosted: Wed Mar 30, 2016 10:58 pm    Post subject:
Reply with quote

Also, this should give you what you want.
Code:
  select
LPAD(replace('7              ',' ',''),5,'0')
 from sysibm.sys1dummy
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DB2 All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts Converting Variable block file to Fix... bhavana yalavarthi DFSORT/ICETOOL 10 Tue May 16, 2017 2:20 pm
No new posts SMTP the current generation number of... Jyothi Kulunde JCL & VSAM 4 Thu May 04, 2017 4:08 pm
No new posts READ A PACKED "NEGATIVE" FI... jdesouza CA Products 3 Tue May 02, 2017 11:43 pm
No new posts Alter &DATENS field in HEADER1 Angad DFSORT/ICETOOL 4 Mon Apr 24, 2017 11:49 am
No new posts Edit large number of datasets (QSAM) zh_lad TSO/ISPF 3 Tue Apr 04, 2017 6:08 pm


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us