本文對比 MySQL 與 SQL Server 獲取字串/二進制資料長度的函數差異與使用細節。
USE [database_name];
GO
SELECT LEN([column_name]) FROM [schema].[table_name];
NULL 時返回 NULLVARBINARY 類型亦可使用,返回位元組數CREATE TABLE tmp13(vb VARBINARY(10));
INSERT INTO tmp13 (vb) VALUES(12);
SELECT LENGTH(vb) FROM tmp13; -- 返回位元組長度
INSERT INTO tmp13 (vb) VALUES(1212);
SELECT LENGTH(vb), CHAR_LENGTH(vb) FROM tmp13;
CHAR_LENGTH() 同義詞| 項目 | SQL Server LEN() | MySQL LENGTH() | MySQL CHAR_LENGTH() |
|---|---|---|---|
| 計算單位 | 字元 (忽略尾部空格) | 位元組 | 字元 |
| 尾部空格 | 不計入 | 計入 | 計入 |
| NULL 處理 | 返回 NULL | 返回 NULL | 返回 NULL |
| 二進制類型 | 位元組數 | 位元組數 | 不適用 |
-- MySQL (UTF-8 編碼)
SELECT
LENGTH('測試'), -- 6 位元組 (每字 3 bytes)
CHAR_LENGTH('測試'); -- 2 字元
-- SQL Server
SELECT LEN(N'測試'); -- 2 字元 (N 字首表示 Unicode)
LEN() 忽略尾部空格,MySQL LENGTH()/CHAR_LENGTH() 保留。遷移邏輯需手動 RTRIM() 對齊。