Indice
Risultati ricerca
Frase completa
Cerca nella pagina
Chiudi
Indice

DEFINIZIONE VINCOLI WHERE

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

  • Confronto tra due stringhe – se una colonna viene confrontata con un valore costante la sintassi è la classica:

Promozione.Nome = ’Regalissimi 2012’

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

Promozione.Nome = ’[nome promo preferita]’

  • Confronto per similarità tra stringhe – se il confronto suddetto va fatto per similarità, tramite il costrutto LIKE, le notazioni (utilizzando la % per la parte di stringa che può assumere qualunque carattere numerico e alfanumerico) diventeranno rispettivamente:

Promozione.Nome = ‘Regalissimi%’

Promozione.Nome = ‘[nome promo preferita]%’

  • Range tra date – è possibile inserire un vincolo where ponendo un range di tempo valido.

Determinato il campo di riferimento e gli eventuali valori di inizio e fine di riferimento la sintassi prevederà di esprimere le date di validità tramite il casting con la convert e ponendo rispettivamente gli operatori di confronto “>=” e “<” rispettivamente.

  • Confronto tra date – con confrontare due date, è necessario specificare anche la porzione “ora-minuti-secondi”, affinché la query possa interrogare correttamente il database di SQL Server e permetta di restituire le righe corrette.

In un confronto tra date nel vincolo WHERE attraverso il “minore uguale” e/o “maggiore uguale” è necessario applicare una convert (es. convert(datetime, ‘[data validità interessata]’, 120), dove 120 è il formato) per poter fare confronti tipo:

DataValidità >= convert(…) oppure in DataValidità <= convert(…);

in questo ultimo caso è necessario però specificare anche la parte dell’ora, dato che il vincolo di minore uguale tende ad applicare un filtro di selettività anche sull’orario. Pertanto nell’esempio se vogliamo filtrare tutte le righe con data di validità minore uguale ad una specificata (es. 06/06/2013) è necessario applicare una condizione seguente:

“Where DataValidita <= convert(datetime, ‘[data validità interessata] 23:59:59’, 120)”.

Ad esempio si supponga di voler selezionare tutti i Conti aventi data di validità corrispondente ad una specifica data, la query da configurare può essere così definita:

NOTA BENE: il separatore da utilizzare nella formattazione della porzione “ora-minuti-secondi” dipenderà dalla cultura utilizzata da SQL Server: potranno essere pertanto i “:” oppure “.”; se tale formattazione dovesse essere non corretta, Passepartout Retail darà una notifica a video sospendendo l’esecuzione della query (avvenuta o per richiesta di anteprima o per altra operazione).

Con la finestra di inserimento del valore del parametro è possibile inserire la porzione “giorno-mese-anno”, che sarà poi inserito all’interno del vincolo WHERE: è peraltro necessario specificare anche la porzione “ora-minuti-secondi” affinché la query restituisca l’output desiderato:

Pertanto il vincolo “Conti per data di validità uguale ad una data specificata” deve essere interpretato come “Conti per data di validità compresa dalle 00.00.00 della data specificata alle 23.59.59 della medesima data interessata”.