字符长度 mysql BIGINT(128) 无效
>>> 2**64
18446744073709551616
>>> len("18446744073709551616")
20
>>>
CREATE TABLE `test` (
`int1` BIGINT(128) NULL DEFAULT NULL,
`int2` BIGINT(20) NULL DEFAULT NULL
)
COMMENT='test'
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;
Returns the length of the string str, measured in bytes. A multibyte character counts as multiple bytes. This means that for a string containing five 2-byte characters, LENGTH() returns 10, whereas CHAR_LENGTH() returns 5. Returns NULL if str is NULL.
mysql> SELECT LENGTH('text');
-> 4
-
Returns the length of the string
strin bits. ReturnsNULLifstrisNULL.mysql> SELECT BIT_LENGTH('text'); -> 32
-
Returns the length of the string
str, measured in code points. A multibyte character counts as a single code point. This means that, for a string containing two 3-byte characters,LENGTH()returns6, whereasCHAR_LENGTH()returns2, as shown here:mysql> SET @dolphin:='海豚'; Query OK, 0 rows affected (0.01 sec) mysql> SELECT LENGTH(@dolphin), CHAR_LENGTH(@dolphin); +------------------+-----------------------+ | LENGTH(@dolphin) | CHAR_LENGTH(@dolphin) | +------------------+-----------------------+ | 6 | 2 | +------------------+-----------------------+ 1 row in set (0.00 sec)CHAR_LENGTH()returnsNULLifstrisNULL.
SELECT LENGTH('Hello'); -- 返回 5
SELECT LENGTH('你好'); -- 在 utf8 下返回 6
SELECT CHAR_LENGTH('Hello'); -- 返回 5
SELECT CHAR_LENGTH('你好'); -- 返回 2
SELECT BIT_LENGTH('Hello'); -- 返回 40
SELECT BIT_LENGTH('你好'); -- 在 utf8 下返回 48
LENGTH:适用于需要知道字符串占用的实际存储空间时。
CHAR_LENGTH:适用于需要知道字符串中字符数量时,尤其是在多字节字符集下。
BIT_LENGTH:适用于需要知道字符串的二进制表示长度时。
LENGTH 函数返回字符串的字节长度。对于单字节字符集(如 latin1),每个字符占一个字节;对于多字节字符集(如 UTF8
CHAR_LENGTH 函数返回字符串的字符数。无论字符集如何,每个字符都被计算为一个单位。
BIT_LENGTH 函数返回字符串的二进制位长度。每个字节包含 8 位,因此结果是 LENGTH 函数结果的 8 倍。

浙公网安备 33010602011771号