1 votes

Existe-t-il un moyen d'obtenir le premier bit actif via SQL (MySQL) ?

J'ai une colonne nommée a et une colonne nommée b .

Je veux remplir avec un UPDATE ... SET b = ... interroger la colonne b, de manière à ce qu'elle contienne le premier bit qui a est fixé à 1. Ok, vous n'avez probablement pas compris, c'est beaucoup plus facile à comprendre avec un exemple :

a = 2508 = 0x9CC = 0100111001100  
b = 4    = 0x4   = 0000000000100

a = 2080 = 0x820 = 0100000100000  
b = 32   = 0x20  = 0000000100000

Existe-t-il un moyen de faire cela en SQL pur ?

2voto

Ike Walker Points 21162

Ceci devrait suffire :

update your_table
set b = if(a > 0,pow(2,instr(reverse(bin(a)),'1')-1),0);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X