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 ?