&est l'opérateur logique et bit à bit - Il effectue l'opération sur 2 valeurs entières.
WHERE (sc.Attributes & 1) = 0
Le code ci-dessus vérifie si sc.Attributes est un nombre pair. Ce qui revient à dire que le premier bit n'est pas défini.
Cependant, à cause du nom de la colonne :"Attributs", la valeur "1" n'est probablement qu'un indicateur qui a une signification externe.
Il est courant d'utiliser 1 chiffre binaire pour chaque indicateur stocké dans un nombre pour les attributs. Donc, pour tester le premier bit, vous utilisez sc.Attributes&1, pour tester le second, vous utilisez sc.Attributes&2, pour tester le troisième, vous utilisez sc.Attributes&4, pour tester le quatrième, vous utilisez sc.Attributes&8, ...
La partie =0 teste pour voir si le premier bit n'est PAS défini.
Quelques exemples binaires :(==pour afficher le résultat de l'opération)
//Check if the first bit is set, same as sc.Attributes&1
11111111 & 00000001 == 1
11111110 & 00000001 == 0
00000001 & 00000001 == 1
//Check if the third bit is set, same as sc.Attributes&4
11111111 & 00000100 == 1
11111011 & 00000100 == 0
00000100 & 00000100 == 1