Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Können Sie ein Feld in einer MySQL-Abfrage teilen/explodieren?

Bisher wollte ich diese kommagetrennten Listen in meiner SQL-Datenbank behalten - wohlgemerkt aller Warnungen!

Ich dachte immer wieder, dass sie Vorteile gegenüber Nachschlagetabellen haben (die einen Weg zu einer normalisierten Datenbank bieten). Nach einigen Tagen der Weigerung habe ich das Licht gesehen :

  • Die Verwendung von Nachschlagetabellen verursacht NICHT mehr Code als diese hässlichen Zeichenfolgenoperationen, wenn kommagetrennte Werte in einem Feld verwendet werden.
  • Die Nachschlagetabelle ermöglicht native Zahlenformate und ist daher NICHT größer als diese CSV-Felder. Es ist jedoch KLEINER.
  • Die beteiligten Zeichenfolgenoperationen sind in Hochsprachencode (SQL und PHP) dünn, aber teuer im Vergleich zur Verwendung von Arrays von Ganzzahlen.
  • Datenbanken sollen nicht für Menschen lesbar sein, und es ist meistens dumm, zu versuchen, sich an Strukturen aufgrund ihrer Lesbarkeit / direkten Editierbarkeit zu halten, wie ich es getan habe.

Kurz gesagt, es gibt einen Grund, warum es in MySQL keine native SPLIT()-Funktion gibt.