Ho una tabella legacy mysql che contiene un identificativo client e un elenco di elementi, quest'ultimo come stringa delimitata da virgole. Per esempio. "xyz001", "foo,bar,baz"
. Si tratta di materiale legacy e l'utente insiste per essere in grado di modificare una stringa delimitata da virgole.Conversione di stringhe delimitate su più valori in mysql
Ora hanno un requisito per una tabella di rapporto con il suddetto suddiviso in righe separate, ad es.
"xyz001", "foo"
"xyz001", "bar"
"xyz001", "baz"
Rompere la stringa in sottostringhe è facilmente fattibile e ho scritto una procedura per fare questo attraverso la creazione di un tavolo separato, ma questo richiede trigger a che fare con eliminazioni, gli aggiornamenti e gli inserti. Questa query è richiesta raramente (diciamo una volta al mese) ma deve essere assolutamente aggiornata quando viene eseguita, quindi ad es. il sovraccarico dei trigger non è garantito e le attività pianificate per creare la tabella potrebbero non essere abbastanza tempestive.
C'è un modo per scrivere una funzione per restituire una tabella o un set in modo che possa unire l'identificatore ai singoli elementi su richiesta?
Questo funziona a meraviglia, non si può dire che comprendo pienamente, ma non mancherò di studiare fino a quando lo faccio. Grazie mille. – epo
Attenzione: il codice sopra riportato contiene un bug. Non restituisce il primo elemento nell'elenco (ad esempio "pippo"). Il codice qui sotto di Thomas non contiene questo bug. – GregW