venerdì 13 maggio 2016

Cercare una parola o espressione all'interno di un'altra espressione in SQL

In Microsoft SQL Server è possibile trovare una parola o un'espressione all'interno di un'altra espressione;
CHARINDEX(...,...,...) funzione utile ad esempio per eseguire aggiornamenti (update) o farsi restituire dei dati (select) a partire da alcuni caratteri non conoscendo l'intera parola.

Ad esempio, immaginando una tabella autori con alcuni campi (nome, cognome, città di residenza...) si possono modificare i nomi di alcuni elementi partendo da alcune parole.

-- Cambiare il nome in Alberto a tutti gli elementi con cognome che comprende
-- la parola Rossi e che non abbiano la residenza in una città con all'interno la parola Milano, esempi:

-- 'Mario Rossini', diventa, Alberto Rossini
-- 'Luca Marossi', diventa, Luca Marossi
UPDATE tab_autori SET nome='Alberto' where CHARINDEX('Rossi',cognome,1)>0

-- 'Mario Di Paoli' che vive a 'Romano d'Ezzelino' avrà il nome Marco
UPDATE tab_autori SET nome='Marco' where CHARINDEX('Paoli',cognome,1)>0 
 and CHARINDEX('Roma',citta_residenza,1)>0