單獨使用 LENGTH(x) = 5 或 x LIKE '%10%' 均能查到數據 "10001",但組合查詢:
SELECT * FROM table WHERE LENGTH(x = 5) AND x LIKE '%10%';
無法返回預期結果。
LENGTH(x = 5) 邏輯錯誤:
x = 5 是布爾表達式,結果為 0 (false) 或 1 (true)LENGTH(0) 或 LENGTH(1) 分別返回 1,永遠不等於 5SELECT * FROM table
WHERE LENGTH(x) = 5
AND x LIKE '%10%';
LENGTH(x) 計算列 x 的字符串長度= 5 作為長度比較條件AND 組合模糊匹配條件| 函數 | 含義 | 適用場景 |
|---|---|---|
LENGTH(str) | 字節長度 | 存儲空間計算、二進制數據 |
CHAR_LENGTH(str) / CHARACTER_LENGTH(str) | 字符長度 | 多字節字符集(UTF-8)下的字符計數 |