1.4. Espressioni logiche 1.4.1. Espressioni ed operatori logici Allorché si vogliano programmare attività condizionate al verificarsi o meno di determinate condizioni, si opera con le cosiddette espressioni logiche o predicati. Queste esprimono condizioni che possono assumere il valore vero o falso, come ad esempio X > 0, e condizionare un'attività, ad esempio (supposto che X sia il nome di un campo): • • accetta il dato solo se è X > 0; seleziona i record per i quali è X > 0. Nell'ambito dei database, espressioni logiche si usano proprio nel contesto dei due esempi di cui sopra (vedi in seguito): • • per il controllo di validità dei dati da immettere nei campi; per la seleziona di record di una tabella o, più in generale, per le operazioni di query nel database. Diversi ed anche sofisticati sono gli operatori e le operazioni logiche alla base della costruzione di espressioni logiche (">" è stato solo un esempio introduttivo). In figura se ne presenta una sintesi e nel seguito di questa unità didattica se ne chiariscono i significati. Operatori di confronto Operatore < <= > >= = <> Between A and B Significato minore di minore di o uguale a maggiore di maggiore di o uguale a uguale a diverso da Compreso fra A e B (inclusi) Valore uguale IN (x, y,…) ad uno degli elementi delle lista Operatori logici Operatore X and Y X or Y not X Significato vero se sono veri sia X che Y falso se X oppure Y sono falsi vero se X oppure Y lo sono falso se entrambi sono falsi vero se X è falso falso se X è vero Operatori Like e Is Null Operatore Like Is Null Significato Assomiglia a (a confronto con stringa con caratteri jolly) È nullo Operatori per espressioni logiche 1.4.2. Operatori di confronto Gli operatori più elementari per realizzare espressioni logiche sono gli operatori di confronto di cui al RICHIAMO (minore, maggiore, minore o uguale, etc.), che tipicamente si applicano fra un campo ed una costante, come ad esempio • < 100 (minore di 100) • >= 1 (maggiore o uguale a 1) • Between 10 and 100 (Compreso fra 10 e 100) • In (10, 20, 30) (il valore è uno di quelli elencati) e, a seconda delle circostanze, il nome del campo può essere sottinteso (come negli esempi) oppure espresso (Campo<100, Campo >=1, Campo Between 10 and 100). In dipendenza delle istruzioni dove il confronto viene effettuato e di eventuali regole del singolo DBMS, i confronti possono essere anche fra campi diversi, come ad esempio Campo1>Campo2. È da notare che gli operatori di confronto si applicano non soltanto a dati numerici, ma anche a dati di tipo testo (ed allora l’ordinamento di riferimento è quello alfabetico (p.e. “<” significa “precede nell’ordine alfabetico) ed a quelli di tipo Data e ora e l’ordinamento di riferimento è quello temporale. RICHIAMO: § 1.4.1 - Espressioni ed operatori logici 1.4.3. Operatori logici Gli operatori logici (vedi RICHIAMO) consentono di mettere assieme più condizioni e di crearne un’unica, come ad esempio • = 100 Or =200 (uguale a 100 oppure a 200) • = 0 Or >5 (uguale a 0 oppure maggiore di 5) • >= 10 And <= 100 (equivale a "Between 10 And 100") Anche qui è possibile che il campo sia sottinteso oppure che appaia esplicitamente (Campo = 100 Or Campo =200, Campo = 0 Or Campo >5, Campo >= 10 And Campo <= 100) e qualche volta è consentito il riferimento a campi distinti (p.e. Campo1= 100 Or Campo2 =200). RICHIAMO: § 1.4.1 - Espressioni ed operatori logici 1.4.4. Operatori Like e di nullità. I caratteri Jolly Altri operatori sono Like e Is Null (vedi RICHIAMO): • • Like si usa soprattutto nelle query e usa i caratteri jolly "*" e "?", che si adoperano come in Windows (vedi RICHIAMO): "Campo Like Stringa" (con Stringa contenente caratteri jolly) significa "Campo è una delle stringhe compatibili con Stringa" (vedi esempio); Is Null significa "è nullo" (vedi RICHIAMO). Like e Is Null possono anche essere usati in combinazione con gli altri operatori. Si rinvia agli esempi per fissare le idee. RICHIAMO: § 1.4.1 - Espressioni ed operatori logici RICHIAMO: Modulo 2 - § 4.3.10 – Ricerca con caratteri "jolly" RICHIAMO: § 1.2.7 - Valori nulli 1.4.4.1. • • • Esempi di Like e Is Null (esempio) Campo Like "*a" è vera se il campo è di tipo testo e finisce per "a" (i testi tipicamente si indicano fra virgolette); Campo Like "a?a" è vera se il campo è un testo e vale "aba", "ada", "ada", "afa" etc. Campo Is Null è vera se il campo è "nullo" Si presentano in particolare alcuni esempi degli operatori di cui sopra combinati con il Not: • Campo Not Like "*a": il campo non finisce per "a" • Campo Not Like "a?a": il campo non è una delle parole "aba", "ada", "ada", "afa" etc. • Campo Is Not Null: il campo non è "nullo" Ecco ora un esempio più complesso: • Titolo Like "Stori*" And Titolo Not Like "*Italia*” è vera per un titolo che sia "Storia di Francia", "Storie degli inglesi" etc., ma non per "Storia di Italia" né per "Storie degli italiani".