MySQL LIKE spiegato: corrispondenza di pattern, caratteri jolly e best practice

1. Panoramica di MySQL LIKE

L’operatore LIKE di MySQL è usato per cercare dati che corrispondono a un modello specifico in un database. LIKE viene utilizzato nella clausola SQL WHERE e consente di definire condizioni di ricerca basate su parte o sull’intera stringa. Per esempio, è utile quando si cercano “nomi che iniziano con una certa lettera” o “codici prodotto che contengono caratteri specifici”.

Casi d’uso comuni per l’operatore LIKE

  • Ricerche di corrispondenza parziale
  • Ricerca di pattern specifici
  • Filtrare i dati

Poiché questo operatore è specializzato per il matching di pattern, è essenziale per cercare e lavorare in modo efficiente con i dati in un database.

2. Sintassi di base di MySQL LIKE

La sintassi di base per utilizzare l’operatore LIKE in MySQL è la seguente:

SELECT column_name FROM table_name WHERE column_name LIKE 'pattern';

Esempi di utilizzo di LIKE

  • Ricerca di dati che iniziano con un carattere specifico SELECT * FROM users WHERE name LIKE 'A%';
  • Ricerca di dati che contengono una stringa specifica SELECT * FROM products WHERE product_code LIKE '%123%';

L’operatore LIKE è usato insieme a wildcard come % e _. Questo consente ricerche più flessibili.

3. Wildcard usate con LIKE

Con l’operatore LIKE, si usano le wildcard per definire i pattern di ricerca. MySQL supporta principalmente le seguenti due wildcard.

Wildcard %

  • Corrisponde a qualsiasi stringa (zero o più caratteri) SELECT * FROM users WHERE email LIKE '%@example.com'; In questo esempio, ricerca tutti gli indirizzi email che terminano con @example.com.

Wildcard _

  • Corrisponde a un singolo carattere SELECT * FROM products WHERE product_code LIKE '_A%'; In questo esempio, ricerca tutti i codici prodotto in cui il secondo carattere è A.

Usando correttamente le wildcard, è possibile filtrare i dati nel database in modo efficiente.

4. Tecniche di corrispondenza di pattern

Combinando l’operatore LIKE con le wildcard, è possibile eseguire varie ricerche di pattern.

Inizia con

  • Ricerca di dati in cui la stringa inizia con un pattern specifico SELECT * FROM customers WHERE name LIKE 'John%'; Questa query ricerca tutti i nomi dei clienti che iniziano con John.

Finisce con

  • Ricerca di dati in cui la stringa termina con un pattern specifico SELECT * FROM files WHERE filename LIKE '%.pdf'; Questa query ricerca tutti i nomi di file che terminano con .pdf.

Contiene

  • Ricerca di dati in cui la stringa contiene un pattern specifico SELECT * FROM documents WHERE content LIKE '%MySQL%'; Questa query ricerca tutti i documenti che contengono la stringa MySQL.

5. Escape dei caratteri speciali in LIKE

Nell’operatore LIKE, % e _ hanno significati speciali come wildcard. Se si desidera cercarli come caratteri normali, è necessario usare un carattere di escape.

Come fare l’escape

  • Esempio di ricerca usando un carattere di escape SELECT * FROM filenames WHERE filename LIKE 'file\_%' ESCAPE '\'; In questa query, vengono cercati tutti i nomi di file che iniziano con file_. Il _ è normalmente trattato come wildcard, ma usando il carattere di escape \, viene trattato come un carattere normale.

6. Uso avanzato di LIKE

L’operatore LIKE può essere combinato con altre istruzioni SQL per eseguire ricerche più avanzate.

Combinazione con JOIN

  • Ricerca di dati correlati tra tabelle SELECT orders.id, customers.name FROM orders JOIN customers ON orders.customer_id = customers.id WHERE customers.name LIKE '%Smith%'; Questa query recupera gli ordini per i clienti i cui nomi contengono Smith.

Negazione con NOT LIKE

  • Ricerca di dati che non corrispondono a un pattern specifico SELECT * FROM emails WHERE address NOT LIKE '%@spam.com'; Questa query recupera gli indirizzi email che non terminano con @spam.com.

7. Best practice nell’utilizzo di LIKE

Ci sono alcune considerazioni importanti e best practice da tenere presente quando si utilizza l’operatore LIKE.

  • Quando si utilizza l’operatore LIKE, le prestazioni possono diminuire durante la ricerca in grandi set di dati. In particolare, se si posiziona % all’inizio del modello, gli indici non possono essere usati efficacemente, il che può rendere le query più lente.

Utilizzo di Indici Adeguati

  • Per migliorare le prestazioni, considerare la creazione di indici quando necessario.

8. Casi d’Uso Comuni di MySQL LIKE

L’operatore LIKE di MySQL è usato in molti scenari diversi, come i seguenti.

Ricerca Cliente

  • Quando si ricerca in base ai nomi dei clienti o agli indirizzi email.

Ricerca Codice Prodotto

  • Quando si cercano prodotti in base a una parte del codice prodotto.

9. Riepilogo

L’operatore LIKE è uno strumento potente di corrispondenza di pattern in MySQL. In questo articolo, abbiamo coperto tutto, dalla sintassi di base all’uso avanzato e all’ottimizzazione delle prestazioni. Utilizzate correttamente l’operatore LIKE per cercare e lavorare con il vostro database in modo efficiente.

10. Domande Frequenti

Q1: Qual è la differenza tra LIKE e =?
A1: = è usato per ricerche di corrispondenza esatta, mentre LIKE è usato per corrispondenze parziali e pattern matching.

Q2: LIKE è sensibile al maiuscolo/minuscolo?
A2: Nelle impostazioni predefinite di MySQL, LIKE non è sensibile al maiuscolo/minuscolo. Tuttavia, è possibile renderlo sensibile al caso usando la parola chiave BINARY.

Q3: L’operatore LIKE può essere usato con i numeri?
A3: È fondamentalmente usato per le stringhe, ma può essere utilizzato se i numeri sono memorizzati come stringhe.