I found out that typecasting as a text blob was the solution:

ASCII_VAL(CAST(SUBSTRING(Image FROM 1 FOR 1) AS BLOB SUB_TYPE TEXT))

Note typecasting as (VAR)CHAR(1) or CHAR(1) CHARACTER SET ASCII does *not* work.

According to the Firebird documentation, ASCII_VAL is only supported  for 
(VAR)CHAR and text blobs, still i think it is better that also the right value 
should be returned for a byte in a binary blob, or that a 'not supported' error 
is raised.

Kind regards!


--- In [email protected], "rj1102"  wrote:
>
> Using Firebird 2.5 (WI-V2.5.2.26539),
> I try to access a blob with jpeg image, but somehow not all bytes return the 
> right ascii value.
> 
> E.g. I know the first byte of the blob is x'FF' since statement below returns 
> 'TRUE':
> 
> SELECT IIF(SUBSTRING(Image FROM 1 FOR 1) = x'FF', 'TRUE', 'FALSE')
> FROM MyTable WHERE Id = 1
> 
> However statement below returns 74 where I expect 255:
> 
> SELECT ASCII_VAL(CAST(SUBSTRING(Image FROM 1 FOR 1) AS BLOB))
> FROM MyTable WHERE Id = 1
> 
> Field Image is defined as BLOB(80, 0)
> 
> Is there another reliable way to retrieve the numeric value of a byte inside 
> a blob? 
> 
> Thank you very much in advance!
> 
> Robert
>

Reply via email to