Gordon,

>...
>SELECT CONVERT(fdata,BIGINT) INTO tmp_int;
>SELECT HEX(tmp_int);
...
Are you looking for...

SELECT CAST(0xABCDEF0123456789 AS UNSIGNED);
+--------------------------------------+
| CAST(0xABCDEF0123456789 AS UNSIGNED) |
+--------------------------------------+
|                 12379813738877118345 |
+--------------------------------------+
SELECT HEX(12379813738877118345);
+---------------------------+
| HEX(12379813738877118345) |
+---------------------------+
| ABCDEF0123456789          |
+---------------------------+


PB

-----

Gordon Bruce wrote:
I just added a user variable @fdata to get visabilility outside of the procedure and this is what I get.

mysql> delimiter //
mysql> create procedure test20 ()
    ->    BEGIN
    ->       DECLARE fdata BLOB;
    ->       DECLARE foffset INT UNSIGNED;
    ->       DECLARE flength INT UNSIGNED;
    ->                 DECLARE tmp_int BIGINT UNSIGNED;
    ->
    ->                 SELECT 0xABCDEF0123456789 INTO fdata;
    ->                 SELECT 14 INTO foffset;
    ->                 SELECT 7 INTO flength;
    ->
    ->                 SELECT SUBSTR(BINARY(fdata),
    ->                 FLOOR(foffset/8)+1,
    ->                 CEIL((flength + (foffset %8 ))%8))
    ->                 INTO fdata;
    ->   set @fdata:=fdata;
    -> END//
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> delimiter ;
mysql>
mysql> call test20();
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> select @fdata, hex(@fdata)
    ->
    -> ;
+--------+-------------+
| @fdata | hex(@fdata) |
+--------+-------------+
| ═∩☺#E  | CDEF012345  |
+--------+-------------+
1 row in set (0.00 sec)

-----Original Message-----
From: David Godsey [mailto:mysql@godseyfamily.com] 
Sent: Thursday, January 19, 2006 3:33 PM
To: mysql@lists.mysql.com
Subject: [SPAM] - convert help - Bayesian Filter detected spam


I am trying to convert binary data to a bigint so I can do bitwise
operations on the data, and I'm having trouble doing it.

I noticed that if I have binary data and I:
select data>>1; I get 0 (not what I'm expecting).

Here is a test procedure I wrote:

create procedure test20 ()
   BEGIN
                DECLARE fdata BLOB;
      DECLARE foffset INT UNSIGNED;
      DECLARE flength INT UNSIGNED;
                DECLARE tmp_int BIGINT UNSIGNED;

                SELECT 0xABCDEF0123456789 INTO fdata;
                SELECT 14 INTO foffset;
                SELECT 7 INTO flength;

                SELECT SUBSTR(BINARY(fdata),
                FLOOR(foffset/8)+1,
                CEIL((flength + (foffset %8 ))%8))
                INTO fdata;

                SELECT HEX(fdata);
                SELECT CONVERT(fdata,BIGINT) INTO tmp_int;
                SELECT HEX(tmp_int);
        END
The last two selects are added to show what I would like to do, but have
not been able to get it to work.

Any help would be great.  Thanks in advance.

Accomplishing the impossible means only that the boss will add it to your
regular duties.

David Godsey

Accomplishing the impossible means only that the boss will add it to your
regular duties.

David Godsey


  

No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 267.14.21/235 - Release Date: 1/19/2006