sql >> Database teknologi >  >> RDS >> Sqlserver

Ampersand (&) operator i en SQL Server WHERE-klausul

&er den bitvise logiske og operator - Den udfører operationen på 2 heltalsværdier.

WHERE (sc.Attributes & 1) = 0 

Ovenstående kode kontrollerer, om sc.Attributes er et lige tal. Hvilket er det samme som at sige, at den første bit ikke er indstillet.

Men på grund af navnet på kolonnen:"Attributter", så er "1"-værdien sandsynligvis bare et flag, der har en ekstern betydning.

Det er almindeligt at bruge 1 binært ciffer for hvert flag gemt i et tal for attributter. Så for at teste for den første bit bruger du sc.Attributes&1, for at teste for den anden bruger du sc.Attributes&2, for at teste for den tredje bruger du sc.Attributes&4, for at teste for den fjerde bruger du sc.Attributes&8, ...

=0 delen tester for at se, om den første bit IKKE er sat.

Nogle binære eksempler:(==for at vise resultatet af operationen)

//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


  1. PostgreSQL 9-installation på Windows:Kan ikke skrive inde i TEMP-miljøstien.

  2. Hvad er SQL Server-ækvivalenten til ELT() i MySQL?

  3. Hvordan søger man efter skråstreg (\) i MySQL? og hvorfor escape (\) ikke påkrævet for hvor (=), men for Like er påkrævet?

  4. Sådan får du SQLite db-værdier i Arraylist til Listview