jueves, 1 de agosto de 2013

Swap Campos Enteros con XOR en MySql

Una forma de cambiar campos en una tabla de mysql , donde los campos son númericos es valerse de la función XOR.

Un pequeño ejemplo:

create table flipcampo (
       id bigint(20),
      campo1 bigint(20),
      campo2 bigint(20)
);

insert into flipcampo ( id ,
                        campo1 , 
                        campo2
                       ) 
           values 
               (2,1000000,10),
               (2,200000,20),
               (1,3000001,30);

select * from flipcampo;

update flipcampo 
          set campo1 = campo1 ^ campo2,
               campo2 = campo1 ^ campo2,
               campo1 = campo1 ^ campo2 
where id= 2;

select * from flipcampo;

drop table flipcampo;



resultado:

2, 10, 1000000
2, 20, 200000

1, 3000001, 30