Mysql
 sql >> Database >  >> RDS >> Mysql

Puoi dividere/esplodere un campo in una query MySQL?

Fino ad ora, volevo mantenere quegli elenchi separati da virgole nel mio db SQL, ben consapevole di tutti gli avvisi!

Continuavo a pensare che avessero vantaggi rispetto alle tabelle di ricerca (che forniscono un modo per un database normalizzato). Dopo alcuni giorni di rifiuto, ho visto la luce :

  • L'uso delle tabelle di ricerca NON sta causando più codice di quelle brutte operazioni sulle stringhe quando si utilizzano valori separati da virgola in un campo.
  • La tabella di ricerca consente formati numerici nativi e quindi NON è più grande di quei campi CSV. È PIÙ PICCOLO però.
  • Le operazioni sulle stringhe coinvolte sono limitate nel codice del linguaggio di alto livello (SQL e PHP), ma costose rispetto all'utilizzo di array di interi.
  • I database non sono pensati per essere leggibili dall'uomo ed è per lo più stupido cercare di attenersi alle strutture a causa della loro leggibilità/modificabilità diretta, come ho fatto io.

In breve, c'è un motivo per cui non esiste una funzione nativa SPLIT() in MySQL.