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
 

 

Extract 'n'th digit from a interger value using Sql query

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

New User


Joined: 19 Dec 2010
Posts: 42
Location: Bangalore

PostPosted: Sat Oct 15, 2011 6:04 pm    Post subject: Extract 'n'th digit from a interger value using Sql query
Reply with quote

Hi ,

From the integer field emp_no = 123456789, I am trying to extract 8th digit i.e, in my int field it is value 8.

Through googling .. I got some thing about CAST,right functions.. and coded something like below ..

SELECT
CAST(RIGHT(CAST(emp_no AS CHAR),1)AS INT)
from table name where emp_no = 123456789.

However this is resulting in below error :
Code:

SQLCODE = 445, WARNING:  VALUE 123456789 HAS BEEN TRUNCATED


Is it possible to extract nth digit using a query. Please advice .. any pointers will be greatly helpful.[/code]
Back to top
View user's profile Send private message

dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Sat Oct 15, 2011 6:40 pm    Post subject:
Reply with quote

suggest using DIGITS and then extract your 8th char with SUBSTR.

instead of googling for a solution,
RTFM (Read The Fine Manual), then you can build your skill-set so that you can answer future classroom exercises.
Back to top
View user's profile Send private message
GuyC

Senior Member


Joined: 11 Aug 2009
Posts: 1278
Location: Belgium

PostPosted: Mon Oct 17, 2011 1:04 pm    Post subject:
Reply with quote

the behaviour of CHAR() is changing.
It used to give leading zeroes, it wil not in the future
char(integer(12345)) can be '000012345' or '12345'
the eight digit of an integer is thus an ambiguous request.
if you want the "tenths' you could use mod(integer(12345/ 10),10).
Back to top
View user's profile Send private message
jerryte

Active User


Joined: 29 Oct 2010
Posts: 183
Location: Toronto, ON, Canada

PostPosted: Wed Oct 26, 2011 10:58 pm    Post subject:
Reply with quote

Do you want 8th digit from the left or from the right? What if the number is less then 8 digits?

If it is from the left you can use the below
SUBSTR(CHAR(EMP_NO), 8, 1)
This will give you a space if the number is less then 8 digits
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 Join in SQL Query vickey_dw DB2 2 Tue Jan 17, 2017 12:15 am
This topic is locked: you cannot edit posts or make replies. MQ setup query mohitsaini Java & MQSeries 4 Sun Jan 08, 2017 1:53 am
No new posts DB2 query Using Recursion, Converting... smilewithashu2 DB2 1 Tue Jan 03, 2017 12:50 pm
No new posts SQL query to run through list of valu... Ni3-db2 DB2 14 Wed Dec 14, 2016 9:52 am
This topic is locked: you cannot edit posts or make replies. Db2 SQL query to convert rows into co... subratarec DB2 5 Thu Nov 17, 2016 4:51 pm


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