CHAR
Syntax
[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]
Description
A fixed-length string that is always right-padded with spaces to the specified
length when stored. M
represents the column length in characters. The range
of M
is 0
to 255
. If M
is omitted, the length is 1
.
CHAR(0) columns can contain 2 values: an empty string or NULL. Such columns cannot be part of an index. The CONNECT storage engine does not support CHAR(0).
Note: Trailing spaces are removed when CHAR
values are retrieved
unless the PAD_CHAR_TO_FULL_LENGTH
SQL mode is enabled.
Before MariaDB 10.2 all collations are of type PADSPACE, meaning that CHAR (as well as VARCHAR and TEXT values) are compared without regard for trailing spaces. This does not apply to the LIKE pattern-matching operator, which takes into account trailing spaces.
If a unique index consists of a column where trailing pad characters are stripped or ignored, inserts into that column where values differ only by the number of trailing pad characters will result in a duplicate-key error.
Examples
Trailing spaces:
CREATE TABLE strtest (c CHAR(10)); INSERT INTO strtest VALUES('Maria '); SELECT c='Maria',c='Maria ' FROM strtest; +-----------+--------------+ | c='Maria' | c='Maria ' | +-----------+--------------+ | 1 | 1 | +-----------+--------------+ SELECT c LIKE 'Maria',c LIKE 'Maria ' FROM strtest; +----------------+-------------------+ | c LIKE 'Maria' | c LIKE 'Maria ' | +----------------+-------------------+ | 1 | 0 | +----------------+-------------------+
NO PAD collations in MariaDB 10.2
NO PAD collations regards trailing spaces as normal characters. You can get a list of all NO PAD collations with the following query:
select collation_name from information_schema.collations where collation_name like "%nopad%";