字符长度 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
;

LENGTH(str)

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
  • BIT_LENGTH(str)

    Returns the length of the string str in bits. Returns NULL if str is NULL.

    mysql> SELECT BIT_LENGTH('text');
            -> 32
  • CHAR_LENGTH(str)

    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() returns 6, whereas CHAR_LENGTH() returns 2, 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() returns NULL if str is NULL.

 

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 倍。

 

posted @ 2026-08-20 16:35  papering  阅读(1)  评论(0)    收藏  举报