首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 與 SQL Server 差異系列(三):查看欄位長度函數對比

     編輯:MySQL 資料庫相關知識

本文對比 MySQL 與 SQL Server 獲取字串/二進制資料長度的函數差異與使用細節。

SQL Server:LEN() 函數

USE [database_name];
GO
SELECT LEN([column_name]) FROM [schema].[table_name];
  • 返回字串長度(字元數),不包含尾部空格
  • 參數為 NULL 時返回 NULL
  • VARBINARY 類型亦可使用,返回位元組數

MySQL:LENGTH() / CHAR_LENGTH() 函數

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;
  • LENGTH(str):返回位元組長度,多位元組字元(如中文 UTF-8 佔 3 位元組)計算為多個位元組
  • CHAR_LENGTH(str):返回字元長度,一個中文字算 1
  • CHARACTER_LENGTH():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)

遷移注意事項

  1. SQL Server LEN() 忽略尾部空格,MySQL LENGTH()/CHAR_LENGTH() 保留。遷移邏輯需手動 RTRIM() 對齊。
  2. MySQL 位元組長度受字符集影響(utf8mb4 中文 4 bytes,utf8 中文 3 bytes,latin1 1 byte)。
  3. 二進制資料長度兩者一致,皆用位元組計算。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved