Indice
Risultati ricerca
Frase completa
Cerca nella pagina
Chiudi
Indice

DEFINIZIONE DEI FILTRI NELLA CLAUSOLA WHERE

Per una corretta configurazione dei filtri WHERE è opportuno tener conto che:

Confronto tra due stringhe

Se una colonna viene confrontata con un valore costante la sintassi è la classica:

WHERE NomeTabella.NomeCampo = 'Valore'

Qualora invece il confronto debba essere fatto rispetto ad una stringa parametrizzata dall’utente, allora la sintassi sarà simile sostituendo per la stringa costante con il nome del parametro, sempre compreso tra parentesi quadre:

WHERE NomeTabella.NomeCampo = '[parametro]'

Confronto per similarità tra stringhe

Se si vuole confrontare due stringhe su una parte comune si utilizza l’operatore LIKE.

La notazione diventa rispettivamente nei casi di stringa o parametro:

WHERE NomeTabella.NomeCampo = 'Valore%'

WHERE NomeTabella.NomeCampo = '[parametro]%'

Il carattere % corrisponde ad una stringa composta da qualsiasi carattere numerico o alfanumerico.

Range tra date

E’ possibile inserire un vincolo where sui campi Data ponendo un range di tempo valido.

WHERE NomeTabella.NomeCampoData >= Convert(DateTime, '2015-10-04 00:00', 120) and NomeTabella.NomeCampoData < Convert(DateTime, '2015-11-04 00:00', 120)

I valori di confronto sono due date valide che nell’esempio precedente sono ottenute dalle stringhe '2015-10-04 00:00' e '2015-11-04 00:00' opportunamente convertite al tipo DateTime utilizzando le funzioni di conversioni dell’ RDBMS del datamart, nel caso specifico SQL Server.

Il risultato del filtro sono tutte le righe con data compresa tra il 4 ottobre 2015 e il 4 novembre 2015.

Confronto tra date

Per confrontare due date è necessario specificare anche la porzione “ora-minuti-secondi”, affinché la query possa interrogare correttamente il database.

Analogamente al caso precedente nel vincolo WHERE attraverso è necessario applicare una conversione al tipo DateTime. In questo caso è necessario però specificare anche la parte dell’ora, dato che il confronto applica un filtro di selettività anche sull’orario. Pertanto ad esempio se vogliamo filtrare tutte le righe con data di validità precedente al 7 giugno 2015 è necessario applicare la condizione

WHERE DataValidita <= Convert(DateTime, '2015-06-07 23:59:59', 120)

NOTA BENE: il separatore da utilizzare nella formattazione della porzione “ora-minuti-secondi” dipenderà dalla culture” impostata sulla macchina su cui è installato il database. Ad esempio per database la cui impostazione è in lingua italiana, il separatore sarà il carattere “:”, invece per culture EN-US il separatore è “.”
Se la formattazione non è corretta, il sistema restituirà una notifica a video sospendendo l’esecuzione della query (che sia per richiesta di anteprima o per altra operazione).