18th Jul 2022 Tempo di lettura: 10 minuti Come usare il LIKE in SQL: Corrispondenza dei modelli SQL Dorota Wdzięczna LIKE corrispondenza dei modelli in SQL operatore sql Indice Come usare LIKE in SQL? Corrispondenza parziale SQL: Uso di LIKE con i caratteri jolly Corrispondenza parziale SQL: il carattere jolly percentuale SQL Partial Match: il carattere jolly underscore SQL Partial Match: Combinazione di caratteri jolly Uso di LIKE in SQL con il testo Combinazione degli operatori NOT e LIKE Uso di LIKE in SQL con altri operatori Uso di LIKE in SQL in altre istruzioni Per saperne di più sulla corrispondenza dei modelli SQL La corrispondenza dei modelli in SQL è un'abilità molto importante e utile. In questo articolo vedremo come eseguirla utilizzando LIKE in SQL. Lacorrispondenza dei modelli SQL è un concetto molto semplice. Permette di cercare stringhe e sottostringhe e di trovare determinati caratteri o gruppi di caratteri. Oltre che in SQL, questa operazione può essere eseguita in molti altri linguaggi di programmazione. In questo articolo esamineremo come utilizzare LIKE in SQL per la ricerca di sottostringhe. Faremo inoltre una distinzione tra SQL exact match e SQL partial match, spiegando come è possibile espandere la ricerca utilizzando i caratteri jolly. Infine, chiariremo quando è necessario utilizzare qualcosa di diverso da LIKE per trovare una corrispondenza. Se volete esercitarvi con LIKE e altre funzioni di SQL, date un'occhiata alla nostra traccia SQL Practice Il nostro percorso. Offre oltre 600 esercizi interattivi di SQL per aiutarvi a rivedere le vostre conoscenze di SQL e ad acquisire fiducia nelle vostre capacità di SQL. Come usare LIKE in SQL? Supponiamo di dover recuperare alcuni record in base al fatto che una colonna contenga o meno un certo gruppo di caratteri. Come sapete, in SQL la clausola WHERE filtra i risultati SELECT. Da sola, WHERE trova le corrispondenze esatte. Ma cosa succede se si ha bisogno di trovare qualcosa utilizzando una corrispondenza parziale? In questo caso, è possibile utilizzare LIKE in SQL. Questo operatore cerca stringhe o sottostringhe per caratteri specifici e restituisce tutti i record che corrispondono allo schema. (Di seguito è riportata la sintassi dell'operatore LIKE in un'istruzione SELECT : SELECT [ column_list | * ] FROM table_name WHERE column or expression LIKE pattern; Notate che il nome della colonna o l'espressione da cercare viene prima di LIKE in SQL. Dopo l'operatore c'è il modello da abbinare. Questo schema può essere un testo puro o un testo misto a uno o più caratteri jolly. L'uso dei caratteri jolly verrà spiegato in seguito. Corrispondenza parziale SQL: Uso di LIKE con i caratteri jolly Se non si conosce il modello esatto che si sta cercando, si possono usare i caratteri jolly per trovarlo. I caratteri jolly sono simboli di testo che indicano il numero di caratteri da inserire in un determinato punto della stringa. Lo standard SQL ANSI utilizza due caratteri jolly, il percento (%) e il trattino basso (_), che vengono utilizzati in modi diversi. Quando si utilizzano i caratteri jolly, si esegue una corrispondenza parziale SQL invece di una corrispondenza esatta SQL, poiché non si include una stringa esatta nella query. wildcard description % zero, one, or many characters, including spaces _ a single character Guardate la tabella completa animal che verrà utilizzata nelle nostre query SQL: id name 1 frog 2 dog 3 bear 4 fox 5 jaguar 6 puma 7 panda 8 lion 9 leopard 10 sheep 11 camel 12 monkey 13 lemur 14 rabbit 15 hedgehog 16 elephant 17 elephant.. . 18 langur 19 hog 20 gerenuk 21 22 null Nota: ... . indica due spazi. Corrispondenza parziale SQL: il carattere jolly percentuale Come si può vedere nella tabella precedente, il carattere jolly percentuale può essere utilizzato quando non si è sicuri di quanti caratteri faranno parte della corrispondenza. Nell'esempio che segue, notate cosa succede quando si usa solo questo carattere jolly con LIKE in SQL: SELECT id, name FROM animal WHERE name LIKE '%' ; Risultato: id name 1 frog 2 dog 3 bear 4 fox 5 jaguar 6 puma 7 panda 8 lion 9 leopard 10 sheep 11 camel 12 monkey 13 lemur 14 rabbit 15 hedgehog 16 elephant 17 elephant.. . 18 langur 19 hog 20 gerenuk 21 Nota: .. . indica due spazi. Questo utilizzo della corrispondenza parziale SQL restituisce tutti i nomi della tabella, anche quelli senza caratteri. animal della tabella, anche quelli senza alcun carattere nella colonna nome. Questo perché il carattere jolly percentuale indica qualsiasi carattere o nessun carattere. Anche se nella colonna name è presente un valore nullo, viene restituita una stringa vuota. Se invece si desidera restituire solo i nomi degli animali che iniziano con un carattere "g", si deve scrivere la query usando un "g" davanti al carattere jolly percentuale: SELECT id, name FROM animal WHERE name LIKE 'g%' ; Il risultato di questa operazione di corrispondenza parziale SQL è il seguente: id name 20 gerenuk Allo stesso modo, se si desidera selezionare i nomi di animali che terminano con un "g", si deve anteporre il carattere jolly percentuale, come mostrato in questa query SQL a corrispondenza parziale: SELECT id, name FROM animal WHERE name LIKE '%g'; Risultato: id name 1 frog 2 dog 15 hedgehog 19 hog La seguente query restituisce tutti gli animali il cui nome contiene un "g". A tale scopo, si utilizzano due caratteri jolly percentuali e un carattere "g", come mostrato di seguito. SELECT id, name FROM animal WHERE name LIKE '%g%'; Risultato: id name 1 frog 2 dog 5 jaguar 15 hedgehog 18 langur 19 hog 20 gerenuk Tutti questi animali hanno un nome che contiene una "g" all'inizio, al centro o alla fine. Passiamo ora al carattere jolly underscore. SQL Partial Match: il carattere jolly underscore Il carattere jolly underscore rappresenta un singolo carattere per ogni underscore. In questa corrispondenza parziale SQL, può sostituire qualsiasi carattere, ma ogni underscore è limitato a un solo carattere. Osservate l'esempio seguente: SELECT id, name FROM animal WHERE name LIKE '_'; Risultato: id name 0 righe Questa query non ha restituito alcun record perché nella tabella non ci sono nomi di animali con un solo carattere. L'esempio successivo mostra tutti i nomi che contengono esattamente cinque caratteri. Per rappresentarli, dobbiamo usare cinque trattini bassi: SELECT id, name FROM animal WHERE name LIKE '_____'; Risultato: id name 7 panda 10 sheep 11 camel 13 lemur Se si utilizza il carattere jolly underscore alla fine della stringa di corrispondenza parziale SQL, la query restituirà tutti i record che corrispondono al testo indicato più un altro carattere. Di seguito viene riportato un esempio: SELECT id, name FROM animal WHERE name LIKE 'lio_'; Risultato: id name 8 lion Cosa viene restituito quando la query ha un carattere jolly underscore al centro della stringa? SELECT id, name FROM animal WHERE name LIKE 'p_ma'; Risultato: id name 6 puma Si tratta di tutti gli animali il cui nome inizia con "p" e finiscono con "ma", con un solo carattere in mezzo. SQL Partial Match: Combinazione di caratteri jolly È anche possibile utilizzare una combinazione di caratteri jolly di sottolineatura e percentuali per la corrispondenza dei pattern SQL. Guardate il seguente esempio: SELECT id, name FROM animal WHERE name LIKE '%ho_'; Risultato: id name 15 hedgehog 19 hog Come si può vedere, questa query ha restituito nomi che combinavano "ho" con un numero qualsiasi di caratteri davanti e un solo carattere dopo. Uso di LIKE in SQL con il testo Ora vedremo come utilizzare LIKE in SQL con stringhe di solo testo e senza caratteri jolly. In alcune circostanze, è possibile che esistano opzioni migliori rispetto all'uso di LIKE nella corrispondenza dei pattern SQL. Ma per ora vediamo come funziona. Cominciamo con l'esaminare la tabella completa dei nomi degli animali e dei numeri identificativi, come mostrato di seguito: id name 1 frog 2 dog 3 bear 4 fox 5 jaguar 6 puma 7 panda 8 lion 9 leopard 10 sheep 11 camel 12 monkey 13 lemur 14 rabbit 15 hedgehog 16 elephant 17 elephant. .. 18 langur 19 hog 20 gerenuk 21 22 null Nota: . .. indica due spazi. Tipi di dati di testo in SQLhttps://t.co/2cWLoe7ONa#sql #ImparareSQL #Database - Vertabelo (@Vertabelo) 5 gennaio 2017 Si noti che il record in cui id=21 ha una stringa vuota (senza caratteri). L'ultimo record ha un valore NULL nella colonna name. Ora, supponiamo di voler recuperare i record in cui il nome dell'animale è "elefante". È abbastanza semplice, come mostra l'esempio qui sotto: SELECT id, name FROM animal WHERE name LIKE 'elephant'; Risultato: id name 16 elephant Nella tabella ci sono effettivamente due record contenenti "elefante". Tuttavia, il secondo record ha due spazi aggiuntivi alla fine della parola, quindi non viene restituito. Proviamo un altro schema di testo che includa questi due spazi. SELECT id, name FROM animal WHERE name LIKE 'elephant '; Risultato: id name 17 elephant. .. Nota: . .. indica due spazi. Anche in questo caso, c'è un solo record: "elefante" con due spazi. Supponiamo poi di utilizzare una stringa di testo concreta e un operatore di uguaglianza (=), come in questo caso: SELECT id, name FROM animal WHERE name = 'elephant ' ; Risultato: id name 16 elephant Se si vuole verificare se una stringa di testo è uguale al valore di una colonna, si cerca una corrispondenza esatta SQL piuttosto che una corrispondenza parziale SQL. In questo caso, utilizzare l'operatore equals piuttosto che LIKE. Combinazione degli operatori NOT e LIKE È anche possibile verificare la presenza di stringhe che non corrispondono a uno schema. A tale scopo, si combinano gli operatori LIKE e NOT. Si tratta di un altro modo di eseguire la corrispondenza dei modelli SQL. Nell'esempio seguente, vogliamo trovare tutti i nomi di animali che non hanno il carattere "a": SELECT id, name FROM animal WHERE name NOT LIKE '%a%'; Risultato: id name 1 frog 2 dog 4 fox 8 lion 10 sheep 12 monkey 13 lemur 15 hedgehog 19 hog 20 gerenuk 21 camel Uso di LIKE in SQL con altri operatori La clausola WHERE può includere più di una condizione. Pertanto, LIKE e NOT LIKE possono essere utilizzate con altri operatori. Vediamo un altro esempio: SELECT id, name FROM animal WHERE name LIKE '%g' OR name LIKE 's%' ; Risultato: id name 1 frog 2 dog 10 sheep 15 hedgehog 19 hog Ha restituito tutti i nomi di animali che iniziano con un carattere "s" o che terminano con un carattere "g". Uso di LIKE in SQL in altre istruzioni Finora abbiamo parlato dell'uso di LIKE in SQL solo nelle istruzioni di SELECT. Ma questo operatore può essere usato anche in altre istruzioni, come UPDATE o DELETE. Come si può vedere, la sintassi è abbastanza simile: UPDATE table SET column1 = newValue WHERE column2 LIKE pattern ; DELETE FROM table WHERE column LIKE pattern ; Vediamo come utilizzare LIKE per cambiare i nomi di alcuni animali. Pronti? UPDATE animal SET name='tiger' WHERE name LIKE '%key%' ; C'è solo un record che soddisfa la condizione di LIKE %key%: scimmia. Dopo questo aggiornamento, "tigre" sostituirà tutte le istanze di "scimmia". Ecco il risultato dopo aver aggiornato e selezionato tutti i record della tabella. animal tabella. SELECT * FROM animal ; id name 1 frog 2 dog 3 bear 4 fox 5 jaguar 6 puma 7 panda 8 lion 9 leopard 10 sheep 11 camel 12 tiger 13 lemur 14 rabbit 15 hedgehog 16 elephant 17 elephant.. . 18 langur 19 hog 20 gerenuk 21 22 null Nota: . .. indica due spazi. Successivamente, cancelleremo tutti i record in cui il nome dell'animale inizia con un carattere "t": DELETE FROM animal WHERE name LIKE 't%' ; Per saperne di più sulla corrispondenza dei modelli SQL La corrispondenza dei modelli SQL è molto utile per la ricerca di sottostringhe di testo. LIKE e il suo parente stretto NOT LIKE rendono questa operazione molto semplice. Se siete interessati a saperne di più sulla corrispondenza dei pattern e sull'operatore LIKE, date un'occhiata al corso SQL Basics . Vi mostrerà come costruire query da zero, ma introdurrà anche abilità pratiche come la corrispondenza dei pattern. Se avete una conoscenza di base del linguaggio SQL, potete rinfrescarla con il programma SQL Practice Set di 88 esercizi, che vanno da semplici operazioni con le istruzioni di SELECT FROM a problemi più avanzati che coinvolgono più subquery. Oppure provate la nostra SQL Practice con 5 corsi pratici di SQL e oltre 600 esercizi. Iscrivetevi subito gratuitamente! Tags: LIKE corrispondenza dei modelli in SQL operatore sql