Spesso, per filtrare i dati, dovremo campionare non in base alla corrispondenza esatta della condizione, ma in base a un valore approssimativo. Ciò avviene quando, ad esempio, cerchiamo un prodotto il cui nome corrisponda a un determinato schema (espressione regolare) o contenga determinati simboli o parole. A tale scopo, in SQL esiste un operatore LIKE, che cerca valori approssimativi. Per costruire un tale modello, vengono utilizzati metacaratteri (caratteri speciali, per la ricerca di parte del valore), vale a dire: "segno di percentuale" (%) o asterisco (*), "trattino basso" (_) o "punto interrogativo" (?) , "parentesi quadre" ([ ]).
Selezioniamo, ad esempio, dalla nostra tabella i record che riguardano solo i prodotti che contengono la parola Sci nel nome. Per fare ciò, creeremo un modello adatto:
Run SQLSELECT *
FROM Sumproduct
WHERE Product LIKE '*Skis*'
Come puoi vedere, il DBMS ha selezionato solo quei record in cui la colonna Prodotto conteneva prodotti contenenti la parola Sci.
Un carattere di sottolineatura o un punto interrogativo viene utilizzato per sostituire un singolo carattere in una parola. Sostituiamo tutte le vocali nella parola Bikes con un "punto interrogativo" (?) e vediamo il risultato:
Run SQLSELECT *
FROM Sumproduct
WHERE Product LIKE 'B?k?s'
Il metacarattere parentesi quadra ([ ]) viene utilizzato per specificare contemporaneamente un set di caratteri da ricercare.
SELECT *
FROM Sumproduct
WHERE City LIKE '[TN]*'
Nell'esempio precedente, abbiamo selezionato i record in cui i nomi delle città iniziano con la lettera T o N nel campo City.
Anche in questo caso possiamo utilizzare un altro metacarattere che fa il contrario. Aggiungiamo un punto esclamativo (!) alla nostra espressione regolare, che significherà "non uguale" (per MS Access) o un segno di potenza (^) (per altri DBMS).
SELECT *
FROM Sumproduct
WHERE City LIKE '[!TN]*'
Cioè, l'ultima query che abbiamo creato verrà letta come: seleziona tutte le colonne dalla tabella Sumproduct e solo quei record in cui i nomi delle città nel campo City non iniziano con le lettere T o N. Inoltre, notiamo che il l'insieme di lettere nel metacarattere "parentesi quadre" corrisponde a una sola posizione nel testo.
Possiamo ottenere un risultato simile se utilizziamo l'operatore NOT che già conosciamo, ma con un punto esclamativo (!) il record sarà più breve.