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

Kan du opdele/eksplodere et felt i en MySQL-forespørgsel?

Indtil nu har jeg ønsket at beholde de kommaseparerede lister i min SQL-db - godt klar over alle advarsler!

Jeg tænkte hele tiden, at de har fordele i forhold til opslagstabeller (som giver en vej til en normaliseret database). Efter nogle dages afvisning har jeg set lyset :

  • Brug af opslagstabeller forårsager IKKE mere kode end de grimme strengoperationer, når du bruger kommaseparerede værdier i ét felt.
  • Opslagstabellen tillader oprindelige talformater og er derfor IKKE større end disse csv-felter. Det er dog MINDRE.
  • De involverede strengoperationer er tynde i sprogkode på højt niveau (SQL og PHP), men dyre sammenlignet med at bruge arrays af heltal.
  • Det er ikke meningen, at databaser skal kunne læses af mennesker, og det er for det meste dumt at prøve at holde sig til strukturer på grund af deres læsbarhed/direkte redigerbarhed, som jeg gjorde.

Kort sagt er der en grund til, at der ikke er nogen indbygget SPLIT()-funktion i MySQL.



  1. Fejl ved installation af mysql2:Kunne ikke bygge gem native-udvidelse

  2. Får eksekveringstilladelse til xp_cmdshell

  3. Sådan laver du en LEFT ANTI SEMI JOIN i SQL Server

  4. Hvordan UNION fungerer i PostgreSQL