[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE
collation_name]

A variable-length string. M represents the maximum column length. In
MySQL 5.0, the range of M is 0 to 255 before MySQL 5.0.3, and 0 to
65,535 in MySQL 5.0.3 and later. (The actual maximum length of a
VARCHAR in MySQL 5.0 is determined by the maximum row size and the
character set you use. The maximum effective column length starting
with MySQL 5.0.3 is subject to a row size of 65,532 bytes.)

Note: Before 5.0.3, trailing spaces were removed when VARCHAR values
were stored, which differs from the standard SQL specification.

Prior to MySQL 5.0.3, a VARCHAR column with a length specification
greater than 255 was converted to the smallest TEXT type that could
hold values of the given length. For example, VARCHAR(500) was
converted to TEXT, and VARCHAR(200000) was converted to MEDIUMTEXT.
This was a compatibility feature. However, this conversion affected
trailing-space removal.

VARCHAR is shorthand for CHARACTER VARYING.

VARCHAR values are stored using as many characters as are needed, plus
one byte to record the length (two bytes for columns that are declared
with a length longer than 255).

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

