Ciao a tutt*, stò cercando di fare una funzione sql che, prendendo dei dati VARCHAR estratti con GROUP_CONCAT e separati da ; mi restituisca la parola più lunga tra le presenti da assegnare alla mail (dato che considero questo dato come univoco).

Per spiegarmi meglio:
facendo un'estrazione prendo dati da diverse tabelle che confluiscono in una unica tabella, facendo questo però mi porto dietro dei duplicati che vorrei bonificare.

Per es. tab. newsletter e tab abbonati, da entrambe estraggo la mail pippo@topolinia.it che però in un caso è associata a nome=pippo e conome=cognome mentre in un altro è associata a nome=pi e cognome=deric.

Quello che vorrei fare, dopo aver ottenuto: pippo@topolinia.it | pippo;pi | cognome;deric col GROUP_CONCAT, è una funzione che, penso utilizzando CHAR_LENGHT, mi estragga la "parola più lunga" da inserire nella tabella di destinazione associata alla mail.

Qualcuno ha dei suggerimenti da darmi perchè io non riesco a uscirne ...

Qui sotto quello che ho iniziato a fare.

Grazie mille!!!

DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`split` $$
CREATE FUNCTION `split`( nome VARCHAR (255) )
RETURNS varchar (255) DETERMINISTIC
BEGIN

SET nome = CHAR_LENGHT('nome')
???????????????
RETURN nome;
INSERT INTO elenco_mail ('nome')
END$$

DELIMITER ;