документація mysql

Типи даних CHAR і VARCHAR дуже схожі між собою, але розрізняються за способами їх зберігання та вилучення.

У стовпці типу CHAR довжина поля постійна і задається при створенні таблиці. Ця довжина може приймати будь-яке значення між 1 і 255 (що ж стосується версії MySQL 3.23, то в ній довжина стовпчика CHAR може бути від 0 до 255). Величини типу CHAR при зберіганні доповнюються справа пробілами до заданої довжини. Ці кінцеві прогалини видаляються при добуванні збережених величин.

Величини в шпальтах VARCHAR є рядки змінної довжини. Так само як і для стовпців CHAR. можна задати стовпець VARCHAR будь-якої довжини між 1 і 255. Однак, на противагу CHAR. при зберіганні величин типу VARCHAR використовується тільки ту кількість символів, яке необхідно, плюс один байт для запису довжини. Збережені величини пробіл не доповнюються, навпаки, кінцеві прогалини при зберіганні видаляються (описаний процес видалення пробілів відрізняється від передбаченого специфікацією ANSI SQL).

Якщо задається в стовпці CHAR або VARCHAR величина перевищує гранично допустиму довжину стовпчика, то ця величина відповідним чином буде скорочуватися.

Різниця між цими двома типами стовпців в поданні результату зберігання величин з різною довжиною рядка в шпальтах CHAR (4) і VARCHAR (4) проілюстровано наступною таблицею:

Витягнуті з стовпців CHAR (4) і VARCHAR (4) величини в кожному випадку будуть одними і тими ж, оскільки при вилученні кінцеві прогалини з шпальти CHAR видаляються.

Якщо при створенні таблиці не було наведено атрибут BINARY для стовпців, то величини в шпальтах типу CHAR і VARCHAR упорядковано і порівнюються без урахування регістру. При завданні атрибута BINARY величини в стовпці сортуються і порівнюються з урахуванням регістра відповідно до порядку таблиці ASCII на тому комп'ютері, де працює сервер MySQL. Атрибут BINARY не впливає на процеси зберігання або вилучення даних з шпальти.

Атрибут BINARY є '' прилипливі ''. Це означає, що, якщо в будь-якому вираженні використовувати стовпець, позначений як BINARY. то порівняння всього виразу буде виконуватися як порівняння величини типу BINARY.

MySQL може без попередження змінити тип стовпця CHAR або VARCHAR під час створення таблиці. See section 6.5.3.1 Мовчазні зміни визначень стовпців.

Є ще питання чи щось незрозуміло - ласкаво просимо на наш форум порталу PHP. SU