CISA FotoGallery

Statistiche

Tot. visite contenuti : 928260
Home Articoli tecnici Query e viste Operatori Logici in SQL

Operatori Logici in SQL

Si possono effettuare Query (su un MDB) facendo una maschera di bit su un campo.
Per intenderci fare una cosa del tipo:

Seleziona tutti i record tranne quelli in cui il 3° bit del campo è = 1

Per questo motivo serve avere un minimo di conoscenza della logica BOOLEANA.
Mascherare una parola binaria al fine di ottenere il solo 3° BIT equivale ad eseguire un AND logico con 00000100 che tradotto in Decimale:

Mask= 00000100 = 4 Decimale

Sappiamo infatti che se mascheriamo con logica Booleana una parola a 16 Bit con il valore visto precedentemente si avrà che:

XXXXX1XX
00000100
-------------
00000100

Quindi dato l'assunto iniziale dovrò estrarre tutti i valori che escluderanno il risultato = 4(3° Bit=1) oppure prenderò tutti i valori il cui risultato darà 0.

Teoricamente la Query risultante sarebbe:

SELECT .... FROM ... WHERE (STATO AND 4) <> 4
oppure
SELECT .... FROM ... WHERE (STATO AND 4) = 0

Il problema è che per fare l'operazione bitwise(Bit a Bit) in una espressione SQL ci sono dei limiti:

1. Solo SQL di Jet 4 (A00, AX) ha operatori logici.
2. BAND, BOR e BNOT non sono documentati.
3. Sono raggiungibili solo con OLEDB.
Vuol dire nel codice con ADO.

p.e. puoi eseguire il tuo statement così:

Dim strSQL
strSQL="SELECT * From TableData WHERE (BitData BAND 4)=0 "

CurrentProject.Connection.Execute strSQL

O con un recordset. p.e.

Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set cnn = CurrentProject.Connection
rs.Open strSQL, cnn

Questo articolo è stato preso da un 3D a cura di Karl Donaubauer letto su I.C.A.A.