Home Page for the TeradataForum
 

Archives of the TeradataForum

Message Posted: Sun, 16 May 2004 @ 20:24:56 GMT


     
  <Prev Next>   <<First <Prev
Next>
Last>>
 


Subj:   Re: ByteInt within Character String
 
From:   Maxwell, Donald

It looks like you want the results of the CHAR2HEXINT function cast as a smallint, eg.

     SELECT  CAST( CHAR2HEXINT( SUBSTR( MSG_DATA, 45, 1 ) ) AS SMALLINT )

Of course, you can't do this directly since the CHAR2HEXINT function returns strings like '7E', for example, when the source data = '~'.

You can take the result of the CHAR2HEXINT function and use it in the following expression to compute the number you want:

     SELECT  POSITION ( SUBSTR( CHAR2HEXINT( SUBSTR( MSG_DATA, 45, 1 ) ), 1, 1 )
        IN '123456789ABCDEF0' ) MOD 16 * 16
             + POSITION ( SUBSTR( CHAR2HEXINT( SUBSTR( MSG_DATA, 45, 1 ) ), 2, 1
        ) IN '123456789ABCDEF0' ) MOD 16

In the case of the source data = '~', CHAR2HEXINT will return the string '7E'. The expression above substrings the first character, '7', finds this characer at position 7 in the position function, and multiplies 7 by 16 to get 112. Then you substring the second character, 'E', find it at position 14, and add 14 to 112 to get the final answer = 126.


Donald Maxwell



     
  <Prev Next>   <<First <Prev
Next>
Last>>
 
 
 
 
 
 
 
 
 
  
  Top Home Privacy Feedback  
 
 
Copyright for the TeradataForum (TDATA-L), Manta BlueSky    
Copyright 2016 - All Rights Reserved    
Last Modified: 15 Jun 2023