MySQL LENGTH() 函數(shù)以“字節(jié)”為單位測量字符串長度,這意味著它不是多字節(jié)安全的。多字節(jié)安全函數(shù)(如 CHAR_LENGTH() 或 CHARACTER_LENGTH())與 LENGTH() 函數(shù)之間的結(jié)果差異尤其與 Unicode 相關(guān),其中大多數(shù)字符都以兩個字節(jié)進(jìn)行編碼,或者與 UTF-8 相關(guān),其中字節(jié)數(shù)各不相同。例如,如果字符串包含四個 2 字節(jié)字符,則 LENGTH() 函數(shù)將返回 8,而 CHAR_LENGTH() 或 CHARACTER_LENGTH() 函數(shù)將返回 4。如下例所示 –
示例
mysql> Select LENGTH('tutorialspoint');
+--------------------------+
| LENGTH('tutorialspoint') |
+--------------------------+
| 14 |
+--------------------------+
1 row in set (0.00 sec)
登錄后復(fù)制
上面的結(jié)果集顯示字符串“tutorialspoint”的長度為14,因?yàn)樗€沒有轉(zhuǎn)換為Unicode字符。以下查詢將其轉(zhuǎn)換為 Unicode 字符 –
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2);
Query OK, 0 rows affected (0.02 sec)
登錄后復(fù)制
將字符串轉(zhuǎn)換為 Unicode 后,結(jié)果為 28 而不是 14,因?yàn)樵?Unicode 中單個字符占用 2 個字節(jié),如下所示 –
mysql> Select LENGTH(@A); +------------+ | LENGTH(@A) | +------------+ | 28 | +------------+ 1 row in set (0.00 sec)
登錄后復(fù)制
但是 CHAR_LENGTH() 給出的結(jié)果是 14,因?yàn)樗嵌嘧止?jié)安全函數(shù),如下所示 –
mysql> Select CHAR_LENGTH(@A); +-----------------+ | CHAR_LENGTH(@A) | +-----------------+ | 14 | +-----------------+ 1 row in set (0.00 sec)
登錄后復(fù)制
以上就是MySQL LENGTH() 函數(shù)如何測量字符串長度?的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!






