MySQL tips: GROUP_CONCAT() e CONCAT()

mysqlImmaginiamo di dover eliminare tutti in una volta sola i Trigger memorizzati in precedenza all’interno di un database MySQL.

Lanciamo questa query:

SELECT CONCAT('DROP TRIGGER IF EXISTS ', TRIGGER_SCHEMA, '.', TRIGGER_NAME, ';') FROM information_schema.triggers

.
Poi facciamo copia/incolla dell’output e lo eseguiamo come se fosse una query.
Trigger eliminati.

Dobbiamo invece rinominare tutte le tabelle di un database utilizzando un prefisso? Questa query ci permette di creare delle query che poi utilizzeremo per rinominare le tabelle aggiungendo “prefix_” al nome della tabella:

SELECT GROUP_CONCAT('RENAME TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`;' SEPARATOR ' ') FROM information_schema.Tables WHERE TABLE_SCHEMA = "db_name";

Ora analizziamo le due funzioni che ho utilizzato: CONCAT() e GROUP_CONCAT().
La funzione CONCAT() di MySQL è utile per la manipolazione delle stringhe.
Questa funzione permette di concatenare più campi in un’unica stringa. Ad esempio, se avete due campi “nome” e “cognome” ed avete la necessità di ricercare la stringa “Paolo Rossi”, utilizzate la seguente sintassi:

SELECT CONCAT(nome, ' ', cognome) AS nomi FROM persone WHERE nomi LIKE '%Paolo Rossi%';

La funzione GROUP_CONCAT si occupa invece di concatenare gli elementi di un gruppo, per esempio le righe restituite da una sub-query, in un’unica stringa con la possibilità di specificare un separatore per l’unione dei vari elementi.

Rispondi