sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Varför ange visningsbredd utan att använda zerofill

Denna extra "funktions" visningsbredd är ganska förvirrande, eftersom i andra kolumntyper som CHAR är anger längden.

Här är en kort sammanfattning:

  • Det viktigaste:det är inte anger "lagringsutrymme" eller "antal siffror". Det är bara att säga hur informationen i den här kolumnen är formaterad innan den lämnas tillbaka. INT(5) kan lagra samma värden som INT(16) eller INT(255) - alla tre kan lagra alla (och endast) värden som är giltiga för INT. INT(255) kan inte lagra ett nummer med 255 siffror. Lagringsutrymmet för dem alla är det utrymme som en INT upptar.
  • Om du använder ZEROFILL på en kolumn med visningsbredd, och strängrepresentationen av det lagrade numret är kortare än visningsbredden, kommer den att vara vänsterutfylld med nollor. Om det är längre händer ingenting. Om du väljer INT(5) och värdet är 13, returneras det som 00013. Om värdet är 123456 returneras det som 123456.
  • Om du inte använder ZEROFILL , kommer det inte att finnas någon utfyllnad alls (inga mellanslag och så)
  • Om du använder ZEROFILL , du måste vara medveten om att kolumnen också kommer att vara UNSIGNED
  • I alla fall returneras visningsbredden när tabellens metadata efterfrågas. Så ett program kan veta hur data ska formateras.

Jag ogillar visningsbredden, eftersom lagringslagret "vet" om visuell presentation av lagrad data. Utöver detta finns det ingen nytta som jag är medveten om.




  1. Välja rader där ett fält är null med PHP PDO-förberedda satser och MySQL

  2. Vad är skillnaden mellan varchar och varchar2 i Oracle?

  3. Återställ MySQL root-lösenord när det aktuella lösenordet inte är känt

  4. Använder php filter_var med mysql_real_escape_string