
La gestione delle stringhe è sempre una delle attività di maggior impatto e interesse in tutti i linguaggi. Anche il database non è esente da questo ed è per tale motivo che vi propongo in dettaglio alcune tra le più importanti funzioni per gestire e manipolare stringhe in MySQL.
Upper() e Lower()
Si tratta di semplici funzioni che restituiscono una stringa tutta in minuscolo (lower) o in maiuscolo (upper) a seconda delle esigenze. Potete utilizzarle tranquillamente in una select passando alla funzione un parametro :
"SELECT LOWER(user_name) AS user_name_lower FROM users WHERE user_id = 11"
Substring()
Dal nome avrete già intuito come questa funzione consenta di estrarre una specifica porzione da una stringa.
Richiede 3 parametri : la stringa su cui lavorare, punto di partenza di estrazione e punto finale. Qualora il terzo e ultimo parametro non sia specificato (non è obbligatorio), la funzione provvede ad estrarre la sottostringa dal punto iniziale indicato come secondo parametro fino alla fine della stringa.
Vediamo un esempio che estrae una sottostringa di una news che potrebbe essere usata come preview su una pagina :
$sql = "SELECT news_content, SUBSTRING(news_content, 1, 75) AS news_preview FROM news WHERE news_id = 23"; $article = mysql_query($sql); $articleRow = mysql_fetch_assoc($article); $preview = $articleRow['news_preview'];
Replace()
Forse, a dire il vero, si tratta di una funzione non molto utilizzata nelle queries, ma potrebbe magari tornare utile in un update di tabella. La sintassi è:
REPLACE(testo, stringa_da_sostituire, nuova_stringa)
Va precisato che si tratta di una funzione case-sensitive ovvero che fà distinzione fra maiuscole e minuscole. Come al solito un esempio vale più di mille parole :
update client_table set company_name = replace(company_name, ‘Microsoft’, ‘Apple’);
che serve per sostituire nel campo compagnia della tabella clienti il nome Microsoft con Apple.
Concat()
In tal caso siamo di fronte, invece, ad una funzione utilissima e molto utilizzata per concatenare più stringhe. La sintassi della funzione non prevede un numero di parametri fisso, ma variabile a seconda del numero di stringhe da unire.
Se ad esempio volete ottenere e concatenare in un’unica stringa titolo, nome e cognome di una persona registrati separatamente in una tabella, invece di provvedere con il php potete utilizzare la seguente sintassi :
$sql = "SELECT CONCAT(person_title, ' ' ,person_cognome, ' ', person_nome) AS name FROM people";
$people = mysql_query($sql);
while($person = mysql_fetch_assoc($people)) {
echo $person['name'] . '<br />';
}
Avrete subito notato come abbiamo aggiunto due caratteri separatori tra il titolo, il cognome e il nome, ma, recentemente, è stata messa a disposizione degli sviluppatori MySQL anche la funzione concat_ws(); dove ws sta per with separator.
Nel caso dell’esempio precedente avremo :
$sql = "SELECT CONCAT_WS(' ', person_title, person_cognome, person_nome) AS name FROM people";
$people = mysql_query($sql);
while($person = mysql_fetch_assoc($people)) {
echo $person['name'] . '<br />';
}
con il carattere separatore che si ripete dopo ogni stringa da concatenare.
Like()
Altra funzione molto utilizzata e pratica per effettuare ricerche in un testo. Infatti, MySQL permette di utilizzare l’operatore LIKE che si differenzia dall’operatore di uguaglianza (=) sia perché non è case sensitive e sia perché permette l’uso di due caratteri jolly, cioè caratteri che hanno un significato speciale :
_ significa ‘un qualsiasi carattere’
% significa ‘qualsiasi sequenza di 0 o più caratteri’
Ad esempio :
SELECT saluto FROM saluti WHERE saluto LIKE 'ciao, _ino!'
potrebbe dare come risultato sia ‘ciao, gino’ oppure ‘ciao,peppino’ e simili
Va detto, comunque, che l’uso più comune di tale funzione consiste nel cercare un termine all’inizio, alla fine o in qualsiasi punto del testo come in questo esempio dove al posto di Frase potrete mettere la stringa che state ricercando nel titolo dell’articolo:
SELECT * FROM articles WHERE article_title LIKE "%Frase%"

