sql >> Databasteknik >  >> RDS >> Mysql

Kan du dela/explodera ett fält i en MySQL-fråga?

Fram till nu har jag velat behålla de kommaseparerade listorna i min SQL-db - väl medveten om alla varningar!

Jag tänkte hela tiden att de har fördelar jämfört med uppslagstabeller (som ger en väg till en normaliserad databas). Efter några dagars vägran har jag sett ljuset :

  • Att använda uppslagstabeller orsakar INTE mer kod än de fula strängoperationerna när man använder kommaseparerade värden i ett fält.
  • Uppslagstabellen tillåter inbyggda talformat och är därför INTE större än dessa csv-fält. Den är dock MINDRE.
  • De involverade strängoperationerna är smala i språkkod på hög nivå (SQL och PHP), men dyra jämfört med att använda arrayer av heltal.
  • Databaser är inte menade att vara läsbara för människor, och det är för det mesta dumt att försöka hålla sig till strukturer på grund av deras läsbarhet/direkt redigerbarhet, som jag gjorde.

Kort sagt, det finns en anledning till att det inte finns någon inbyggd SPLIT()-funktion i MySQL.



  1. PHP PDO vs normal mysql_connect

  2. PL/SQL - Använd listvariabel i Where In-klausul

  3. Vad är skillnaden mellan =null och IS NULL?

  4. Använda DateTime i en SqlParameter för lagrad procedur, formatfel