Mysql вычисляет длину строки
В MySQL char_length(str) и length(str) являются встроенными функциями определения длины, на их основе можно получить длину строки; единица измерения char_length(str): символ. Будь то
китайский
иероглиф
, число или буква считается
длиной символа (строка)
. Единица измерения: байт.
Кодировка UTF8: три байта для китайского символа, один байт для числа или буквы.
Кодировка gbk: один китайский символ с двумя байтами, одна цифра или буква с одним байтом.
length()<>char_length() можно использовать для проверки наличия китайских иероглифов.
Расширение:
после версии MySQL 5.0.3 метод расчета размера типа varchar изменился: с самого раннего байтового размера varchar(length) на varchar(char_length).
1) До MySQL 5.0.3:
Размер типа данных: 0–255 байт
Подробное объяснение: 20 в varchar(20) представляет количество байтов. Если сохранена кодировка UTF-8, можно сохранить только 6 китайских символов. varchar(n), где n представляет количество байтов.
2) После MySQL 5.0.3:
Размер типа данных: 0–65535 байт, но занимает до 65532 байт (для хранения длины необходимо два байта, а для хранения длины используется 1 байт, если она меньше 255 байт). Подробное объяснение: varchar(20) представляет количество символов
. Независимо от того, какая кодировка, будь то английская или китайская, можно сохранить 20.
Ссылка: https://blog.csdn.net/qq_39390545/article/details/106618423.