SELECT id FROM bb WHERE len(欄位) > 5;
-- ERROR 1305 (42000): FUNCTION db.LEN does not exist
| 函數 | 回傳 | 適用場景 |
|---|---|---|
LENGTH(str) | 位元組長度 | 二進位資料、計算儲存空間 |
CHAR_LENGTH(str) / CHARACTER_LENGTH(str) | 字元數 | 多位元組字元集(utf8mb4)下計算字數 |
BIT_LENGTH(str) | 位元長度 | 極少用 |
-- 字元數 > 5
SELECT id FROM bb WHERE CHAR_LENGTH(欄位) > 5;
-- 位元組長度 > 5
SELECT id FROM bb WHERE LENGTH(欄位) > 5;
SET @s = '中文';
SELECT LENGTH(@s), CHAR_LENGTH(@s);
-- utf8mb4: LENGTH=6, CHAR_LENGTH=2
-- latin1: LENGTH=2, CHAR_LENGTH=2
LEN()(忽略尾部空格)、DATALENGTH()LENGTH()(字元數)、LENGTHB()(位元組)MySQL 用 CHAR_LENGTH() 算字數,LENGTH() 算位元組。別寫 LEN(),那是 SQL Server 的專利。