- 1 1. Cos’è la funzione SUBSTRING?
- 2 2. Utilizzo di base della funzione SUBSTRING
- 3 3. Applicazioni pratiche della funzione SUBSTRING
- 4 4. Confronto con altre funzioni di stringa
- 5 5. Uso avanzato e ottimizzazione della funzione SUBSTRING
- 6 6. Esempi e Best Practices per la Funzione SUBSTRING
- 7 7. Gestione degli Errori e Differenze di Versione
1. Cos’è la funzione SUBSTRING?
La funzione SUBSTRING in MySQL è uno strumento essenziale per estrarre una porzione di una stringa. Con questa funzione è possibile recuperare solo la parte necessaria dei dati da un database. Per esempio, è utile per estrarre il dominio dall’indirizzo email di un utente o per recuperare una sezione specifica da un codice prodotto.
1.1 Sintassi di base
La sintassi di base della funzione SUBSTRING è la seguente:
SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
str: La stringa di partenza da cui estrarre.pos: La posizione iniziale (indice a base 1).len: Il numero di caratteri da estrarre (opzionale).
Se pos è positivo, conta dall’inizio della stringa. Se è negativo, conta dalla fine. Se len è omesso, la funzione estrae dalla posizione specificata fino alla fine della stringa.
1.2 Casi d’uso della funzione SUBSTRING
Questa funzione è usata per formattare i dati stringa o estrarre parti specifiche, rendendo più efficiente il recupero e l’elaborazione dei dati nei database.
2. Utilizzo di base della funzione SUBSTRING
Vediamo un esempio semplice per capire come funziona.
2.1 Estrarre una parte di una stringa
La query seguente estrae 6 caratteri a partire dal terzo carattere della stringa “Hello, World!”.
SELECT SUBSTRING('Hello, World!', 3, 6);
Il risultato è "llo, W". Poiché pos è 3, inizia dal terzo carattere e, con len impostato a 6, estrae 6 caratteri.
2.2 Omettere la lunghezza
Se ometti len, verrà estratto tutto dalla posizione specificata fino alla fine della stringa.
SELECT SUBSTRING('Hello, World!', 8);
Il risultato è "World!", a partire dall’ottavo carattere fino alla fine.
2.3 Posizione negativa
Usare un valore negativo consente di specificare la posizione a partire dalla fine della stringa.
SELECT SUBSTRING('Hello, World!', -5);
Questa query restituisce "orld!", estraendo gli ultimi 5 caratteri.
3. Applicazioni pratiche della funzione SUBSTRING
La funzione SUBSTRING è frequentemente usata in operazioni di dati reali. Ecco alcuni esempi.
3.1 Estrarre il dominio da un indirizzo email
Combinando SUBSTRING con LOCATE, è possibile estrarre la parte del dominio da un indirizzo email.
SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;
Questa query recupera la stringa dopo il simbolo “@”, fornendo solo la parte del dominio.
3.2 Estrarre una parte di un codice prodotto
Ecco un esempio di estrazione di una parte specifica di un codice prodotto.
SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;
Questa query estrae 4 caratteri a partire dal quinto carattere del codice prodotto e lo visualizza come nuova colonna product_id.
3.3 Uso con sottoquery
Combinandola con sottoquery è possibile estrarre dati in condizioni complesse.
SELECT id, SUBSTRING(description, 1, 10) AS short_desc FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;
Questa query estrae i primi 10 caratteri della colonna description dai prodotti la cui category è ‘Electronics’.

4. Confronto con altre funzioni di stringa
Altre funzioni con scopi simili a SUBSTRING includono LEFT, RIGHT e SUBSTR.
4.1 Funzioni LEFT e RIGHT
LEFT(str, len): Recupera il numero specificato di caratteri dall’inizio della stringa.RIGHT(str, len): Recupera il numero specificato di caratteri dalla fine della stringa.
SELECT LEFT('Hello, World!', 5); -- "Hello"
SELECT RIGHT('Hello, World!', 6); -- "World!"
Queste funzioni sono utili quando si vuole estrarre una porzione di una stringa da un’estremità specifica.
4.2 Funzione SUBSTR
SUBSTR è un alias di SUBSTRING e può essere usata allo stesso modo.
SELECT SUBSTR('Hello, World!', 8); -- "World!"
Questa query restituisce "World!" proprio come SUBSTRING.
5. Uso avanzato e ottimizzazione della funzione SUBSTRING
Ecco come utilizzare SUBSTRING in modo più efficiente e ottimizzare le sue prestazioni.
5.1 Ottimizzazione delle Prestazioni
L’utilizzo di SUBSTRING su grandi dataset può influire sulle prestazioni. Considera di creare indici e di controllare il piano di esecuzione della query quando necessario. Se estrai frequentemente la stessa sottostringa, la memorizzazione in cache dei risultati può anche aiutare.
5.2 Utilizzo nella Clausola WHERE
Puoi utilizzare SUBSTRING in una clausola WHERE per cercare in base a una porzione di una stringa.
SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';
Questa query recupera i prodotti il cui product_code inizia con ‘ABC’.
6. Esempi e Best Practices per la Funzione SUBSTRING
Ecco esempi pratici e best practices per l’utilizzo di SUBSTRING.
6.1 Codice di Esempio
L’esempio seguente divide il nome completo di un cliente in nome e cognome.
SELECT name, SUBSTRING(name, 1, LOCATE(' ', name) - 1) AS first_name,
SUBSTRING(name, LOCATE(' ', name) + 1) AS last_name
FROM customers;
Questa query estrae il nome e il cognome da un nome completo separato da uno spazio.
6.2 Best Practices
- Estrazione Minima : Estrai solo ciò che è necessario con
SUBSTRINGper minimizzare l’impatto sulle prestazioni. - Attenzione al Tipo di Dato : Quando applichi
SUBSTRINGa dati numerici, castalo esplicitamente a stringa prima. - Considerazioni sugli Indici : L’utilizzo di
SUBSTRINGin una clausolaWHEREpuò impedire l’uso degli indici, quindi controlla le prestazioni della tua query.
7. Gestione degli Errori e Differenze di Versione
Copriamo la gestione degli errori e le differenze nel comportamento di SUBSTRING tra le versioni di MySQL.
7.1 Gestione degli Errori
Se la posizione specificata in SUBSTRING è al di fuori dell’intervallo della stringa, restituisce una stringa vuota. Poiché questo non è un errore, è raccomandato aggiungere logica per controllare i risultati in anticipo.
7.2 Differenze di Versione
A seconda della tua versione di MySQL, il comportamento di SUBSTRING può variare. Ad esempio, alcune versioni più vecchie gestiscono i caratteri multibyte in modo diverso. Controlla la compatibilità tra le versioni e applica le misure appropriate se necessario.


