Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pouvez-vous diviser/exploser un champ dans une requête MySQL ?

Jusqu'à présent, je voulais conserver ces listes séparées par des virgules dans ma base de données SQL - bien au courant de tous les avertissements !

Je n'arrêtais pas de penser qu'ils présentaient des avantages par rapport aux tables de recherche (qui fournissent un moyen d'accéder à une base de données normalisée). Après quelques jours de refus, j'ai vu la lumière :

  • L'utilisation de tables de recherche ne génère PAS plus de code que ces opérations de chaîne laide lors de l'utilisation de valeurs séparées par des virgules dans un champ.
  • La table de recherche autorise les formats numériques natifs et n'est donc PAS plus grande que ces champs csv. Il est cependant PLUS PETIT.
  • Les opérations sur les chaînes impliquées sont minces dans le code de langage de haut niveau (SQL et PHP), mais coûteuses par rapport à l'utilisation de tableaux d'entiers.
  • Les bases de données ne sont pas censées être lisibles par l'homme, et il est généralement stupide d'essayer de s'en tenir aux structures en raison de leur lisibilité/modification directe, comme je l'ai fait.

En bref, il y a une raison pour laquelle il n'y a pas de fonction SPLIT() native dans MySQL.