Hello. You can use this technique: drop procedure if exists test20; DELIMITER $$ 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); set @a=concat('0x',hex(fdata)); drop temporary table if exists ta; create temporary table ta(a bigint); set @s=concat('insert into ta set a=(',@a,'+0)'); select @s; prepare st1 from @s; execute st1 ; deallocate prepare st1; select @b:=a from ta; select @b into tmp_int; drop temporary table ta; -- SELECT CONVERT(fdata,BIGINT) INTO tmp_int; SELECT HEX(tmp_int); END $$ DELIMITER ; call test20(); [EMAIL PROTECTED] mysql-debug-5.0.18-linux-i686-glibc23]$ lmysql <res HEX(fdata) CDEF012345 @s insert into ta set a=(0xCDEF012345+0) @b:=a 884478124869 HEX(tmp_int) CDEF012345 David Godsey wrote: > 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 > -- For technical support contracts, goto https://order.mysql.com/?ref=ensita This email is sponsored by Ensita.NET http://www.ensita.net/ __ ___ ___ ____ __ / |/ /_ __/ __/ __ \/ / Gleb Paharenko / /|_/ / // /\ \/ /_/ / /__ [EMAIL PROTECTED] /_/ /_/\_, /___/\___\_\___/ MySQL AB / Ensita.NET <___/ www.mysql.com -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]