Opération sur des masques binaires [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 13-10-2003 à 09:50:08
Hmmm... Ton mask, il est stocké dans quoi ? 
 
C'est une chaîne de caractères ? 
C'est un number dans lequel tu met 10 pour faire 2 ? 
 
A ce moment, change. 
Passe à un number normal, et pour écrire 10, écrit bêtement 2. 
 
En effet, le binaire marche très bien, à condition de rester en vrai binaire, c'est à dire que tu dois stocker tes nombres en tant que nombre, faut pas chercher à ce que ce soit joli à regarder. 
 
Ici, une ligne (syntaxe Oracle) pour tester un bit dans un nombre : 
 
| AND mod(trunc(le_masque/power(2,position_du_bit), 0), 2) = 1 | 
 
 
Si le bit en question est à 1, alors ça retournera true, sinon false. 
 
Sinon, pour faire des AND et OR ou NOT booléens, alors voici la syntaxe SQL Server : 
 
http://msdn.microsoft.com/library/ [...] r_7fax.asp (pour le AND) 
 
Ca donne : 
 
AND ((champ1 & champ2) | !champ3) 
 
Par exemple. Ca fait le résultat de l'oppération : 
 
(champ1 AND champ2) OR NOT champ3
Marsh Posté le 15-10-2003 à 11:25:52
Avec mysql, je pense que les fonctions BIT_OR() et BIT_AND répondent à ton problème  
 
Marsh Posté le 11-10-2003 à 16:38:54
Bonjour,
J'ai une table qui a cette structure :
Grp Mask
0 0011100
1 0101010
2 0011000
3 1110000
4 0110101
Je voudrais, dans une requete SQL, pouvoir faire une opération binaire de regroupement sur un jeu de résultats, par exemple :
Et obtenir ca :
Mask
1110101
C'est à dire un OU sur toutes les lignes d'un champ de mon jeu de résultats.
C'est possible ? Quelqu'un a une piste pour le faire ?