sql >> Databáze >  >> RDS >> Mysql

MySQL VARCHAR Lengths a UTF-8

Tato odpověď se objevila v horní části mých výsledků vyhledávání Google, ale nebyla správná:

Zmatek je pravděpodobně způsoben různými verzemi mysql, které se testují.

  • Verze 4 počítá bajty
  • Verze 5 počítá znaky

http://dev.mysql.com/doc /refman/5.0/en/string-type-overview.html

MySQL interpretuje specifikace délky v definicích sloupců znaků ve znakových jednotkách. (Před MySQL 4.1 byly délky sloupců interpretovány v bajtech.) To platí pro typy CHAR, VARCHAR a TEXT.

Je zajímavé (nepřemýšlel jsem o tom), že maximální délka sloupce varchar je ovlivněna utf8 následovně:

Efektivní maximální délka VARCHAR v MySQL 5.0.3 a novějších závisí na maximální velikosti řádku (65 535 bajtů, které jsou sdíleny mezi všemi sloupci) a použité znakové sadě. Například znaky utf8 mohou vyžadovat až tři bajty na znak, takže sloupec VARCHAR, který používá znakovou sadu utf8, může být deklarován jako maximálně 21 844 znaků.



  1. Pořadí příkazu SQL Select bez klauzule Order By

  2. Uložit obrázek do databáze blob; načíst z db do Pictureboxu

  3. Offset řádků v SQL Server

  4. Jak funguje funkce CONCAT() v PostgreSQL