sql >> Databasteknik >  >> RDS >> Mysql

Vilken är den bästa teckenuppsättningen för e-postfält?

En e-postadress är en textbit. Därför använd inte binär , använd text.

Utf8 verkar vara ett bra val. Jag är inte säker på vilka tecken som stöds för e-postadresser, men man kan förvänta sig att det kommer att tillåtas allt fler unicode-tecken i framtiden. Speciellt om du använder utf8 någon annanstans i din databas, behöver du inte byta från en kodning till en annan, använd bara utf8 för allt.

När det gäller att välja mellan utf8_bin , utf8_unicode_ci och utf8_general_ci , skillnaden är bara sammanställningen. Det betyder att det gör skillnad när man jämför strängarna.

Nu ska man här välja mellan vad som är tillåtet och vad som är normalt. Normalt är e-postadresser skiftlägesokänsliga, men de kan vara skiftlägeskänsliga.

Så om du använder ett unikt index i din e-postkolumn och vill tillåta e-postadresser som endast skiljer sig i versaler, bör du använda utf8_bin , eftersom sammanställningar som slutar med _ci betyder "skiftlägesokänslig".

Om du använder ett unikt index och vill undvika att e-postmeddelanden endast skiljer sig åt i versaler använder du utf8_unicode_ci .

Som sagt, jag använder utf8_unicode_ci . Jag vill att db ska kunna känna igen [email protected] och [email protected] som samma adress. Det är mycket mer användbart än att tillåta möjligheten för adresser med samma tecken och olika versaler.




  1. mysql-låsfel eller bugg?

  2. Subtrahera minuter från ett tidsvärde i PostgreSQL

  3. PostgreSQL:Välj data med ett like på tidsstämpelfältet

  4. Gruppera flera Mysql-satser för att hämta räkningen av flera statusar