sql >> Database >  >> RDS >> Mysql

Hoe kan ik een array met booleaanse waarden opslaan in een MySql-database?

Als u op zoek bent naar een manier om dit te doen op een manier die doorzoekbaar is, dan niet.

Een paar doorzoekbare methoden (met meer dan 1 kolom en/of tabel):

  • Gebruik een heleboel SET kolommen. Je bent beperkt tot 64 items (aan/uit) in een set, maar je kunt waarschijnlijk een manier vinden om ze te groeperen.
  • Gebruik 3 tabellen:Items (id, ...), FlagNames(id, naam) en een draaitabel ItemFlags(item_id, flag_id). U kunt dan items opvragen met joins .

Als je het niet nodig hebt om doorzoekbaar te zijn, dan is alles wat je nodig hebt een methode om je gegevens te serialiseren voordat je ze in de database plaatst, en een unserialize als je ze eruit haalt, en dan een char- of varchar-kolom gebruiken.

  • Gebruik ingebouwde faciliteiten in uw taal (PHP's serialize/unserialize).
  • Voeg een reeks "y"- en "n"-tekens samen.
  • Verpak uw waarden in bits in een string (8 bits per teken) in de client voordat u de MySQL-database aanroept, en pak ze uit wanneer u gegevens uit de database haalt. Dit is het meest efficiënte opslagmechanisme (als alle rijen hetzelfde zijn, gebruik dan char[x], niet varchar[x]) ten koste van het feit dat de gegevens niet doorzoekbaar zijn en iets gecompliceerdere code.


  1. Is er een stuurprogramma voor mysql op nodejs dat opgeslagen procedures ondersteunt?

  2. Records exporteren in Excel-bestand

  3. Mysql:Programmatisch alle externe sleutels verwijderen

  4. MYSQL:Traditioneel &Vereenvoudigd Chinees invoegen in dezelfde 'cel'