Standard SQL defines NCHAR
or
NATIONAL CHAR
as a way to
indicate that a CHAR
column
should use some predefined character set. MySQL uses
utf8
as this predefined character set. For
example, these data type declarations are equivalent:
Press CTRL+C to copyCHAR(10) CHARACTER SET utf8 NATIONAL CHARACTER(10) NCHAR(10)
As are these:
Press CTRL+C to copyVARCHAR(10) CHARACTER SET utf8 NATIONAL VARCHAR(10) NVARCHAR(10) NCHAR VARCHAR(10) NATIONAL CHARACTER VARYING(10) NATIONAL CHAR VARYING(10)
You can use
N'
(or
literal
'n'
) to
create a string in the national character set. These statements
are equivalent:
literal
'
Press CTRL+C to copySELECT N'some text'; SELECT n'some text'; SELECT _utf8'some text';
MySQL 8.0 interprets the national character set as
utf8mb3
, which is now deprecated. Thus, using
NATIONAL CHARACTER
or one of its synonyms to
define the character set for a database, table, or column raises
a warning similar to this one:
Press CTRL+C to copyNATIONAL/NCHAR/NVARCHAR implies the character set UTF8MB3, which will be replaced by UTF8MB4 in a future release. Please consider using CHAR(x) CHARACTER SET UTF8MB4 in order to be unambiguous.