共用方式為


LEN (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics分析平台系統(PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲Microsoft Fabric 中的 SQL 資料庫

傳回指定字串運算式的字元數,但尾端空格不算。

注意

若要傳回用來表示運算式的位元組數目,請使用 DATALENGTH 函數。

Transact-SQL 語法慣例

語法

LEN ( string_expression )

引數

string_expression

要評估的字串 運算式string_expression 可以是字元或二進位資料的常數、變數或資料行。

傳回類型

bigint 如果運算式varchar(max)、nvarchar(max)varbinary(max) 資料類型;否則,int

如果您使用 SC 定序,則傳回的整數值會將 UTF-16 代理配對計為單一字元。 如需詳細資訊,請參閱定序和 Unicode 支援

備註

LEN 排除尾端空格。 如果這是問題,請考慮使用 DATALENGTH 函式,它不會修剪字串。 如果處理 Unicode 字串, DATALENGTH 則會傳回可能不等於字元數的數字。 下列範例示範 LENDATALENGTH ,並搭配尾端空格。

DECLARE @v1 AS VARCHAR (40), @v2 AS NVARCHAR (40);

SELECT @v1 = 'Test of 22 characters ',
       @v2 = 'Test of 22 characters ';

SELECT LEN(@v1) AS [VARCHAR LEN],
       DATALENGTH(@v1) AS [VARCHAR DATALENGTH];

SELECT LEN(@v2) AS [NVARCHAR LEN],
       DATALENGTH(@v2) AS [NVARCHAR DATALENGTH];

注意

用於傳回編碼成給定字串運算式的字元數,並使用 LENDATALENGTH 傳回給定字串運算式的大小 (以位元組為單位)。 這些輸出可能會因資料類型和資料行中使用的編碼類型而異。 如需不同編碼類型之間儲存差異的詳細資訊,請參閱 定序和 Unicode 支援

範例

下列範例會選取 FirstName 居民的 Australia 字元數和資料。 這個範例會使用 AdventureWorks 資料庫。

SELECT LEN(FirstName) AS Length,
       FirstName,
       LastName
FROM Sales.vIndividualCustomer
WHERE CountryRegionName = 'Australia';
GO

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

下列範例會傳回資料行FirstName中的字元數,以及位於 中FirstName員工的名字 (LastName) 和姓氏 (Australia)。

USE AdventureWorks2022;
GO

SELECT DISTINCT LEN(FirstName) AS FNameLength,
                FirstName,
                LastName
FROM dbo.DimEmployee AS e
     INNER JOIN dbo.DimGeography AS g
         ON e.SalesTerritoryKey = g.SalesTerritoryKey
WHERE EnglishCountryRegionName = 'Australia';

結果集如下所示。

FNameLength  FirstName  LastName
-----------  ---------  ---------------
4            Lynn       Tsoflias