View previous topic :: View next topic
|
Author |
Message |
abraralum
New User
Joined: 19 Dec 2010 Posts: 42 Location: Bangalore
|
|
|
|
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 |
|
|
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
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 |
|
|
GuyC
Senior Member
Joined: 11 Aug 2009 Posts: 1281 Location: Belgium
|
|
|
|
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 |
|
|
jerryte
Active User
Joined: 29 Oct 2010 Posts: 202 Location: Toronto, ON, Canada
|
|
|
|
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 |
|
|
|