sql >> Databasteknik >  >> RDS >> Mysql

Flera kryssrutor lagrade i ett enda fält i en databas

Som Jrod påpekade att använda LIKE a> sökord kommer sannolikt att tillfredsställa dina behov.

Men på en sidonotering finns det andra sätt som kan vara bättre i det långa loppet.

1-N-relation

Om du har dina kunskaper i en separat tabell kan du sedan koppla dem i en en till många-relation, det skulle innebära att du kan fråga efter färdighet och sedan ansluta de relevanta personerna till frågan. Detta skulle göra det möjligt för dig att ha mer komplexa frågor som att kunna söka efter mer än en matchande färdighet eller villkorlig matchning men inte en annan färdighet.

Bitflaggor

Som du säger att de är kryssrutor, jag antar att dina färdigheter är begränsade (av antalet kryssrutor) ett annat tillvägagångssätt är att använda ett heltal och använda bitflaggor – till exempel:

  • Java =1
  • C++ =2
  • Lisp` =4
  • haskell =8
  • Python =16

Om du lägger ihop det ackumulerade värdet från alla dina kryssrutor och lagrar detta som ett heltal kan du fråga databasen med en bitvis OCH (&)



  1. MySql Välj Where och C#

  2. Hur använder man OdbcParameter för MySQL?

  3. Hur man aktiverar loggning för SQL-satser när man använder JDBC

  4. Använd CRYPT_GEN_RANDOM() för att skapa ett kryptografiskt slumptal i SQL Server