LEN (Transact-SQL)

適用範圍: 是SQL Server (所有支援的版本) 是Azure SQL Database 是Azure SQL 受控執行個體 是Azure Synapse Analytics 是平行處理資料倉儲

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

注意

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

主題連結圖示 Transact-SQL 語法慣例

語法

LEN ( string_expression )  

注意

若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件

引數

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

傳回型別

expression 的資料類型為 varchar(max)nvarchar(max)varbinary(max),則為 bigint,否則為 int

如果您使用 SC 定序,傳回的整數值也將 UTF-16 Surrogate 字組視為單一字元。 如需詳細資訊,請參閱 Collation and Unicode Support

備註

LEN 會排除尾端空格。 如果這是個問題,請考慮使用不修剪字串的 DATALENGTH (Transact-SQL) 函數。 如果處理的是 Unicode 字串,DATALENGTH 會傳回可能不等於字元數目的數字。 下列範例會示範有尾端空白的 LEN 和 DATALENGTH。

  DECLARE @v1 VARCHAR(40),  
    @v2 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];  

注意

使用 LEN 傳回編碼成所給定字串運算式的字元數目,使用 DATALENGTH 則傳回所給定字串運算式的大小 (以位元組為單位)。 取決於資料行中所使用的資料類型和編碼類型而,這些輸出可能會有所不同。 如需不同編碼類型之間儲存體差異的詳細資訊,請參閱定序與 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 資料行中的字元數和 Australia 中之員工的名字和姓氏。

USE AdventureWorks2016  
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

另請參閱

DATALENGTH (Transact-SQL)
CHARINDEX (Transact-SQL)
PATINDEX (Transact-SQL)
LEFT (Transact-SQL)
RIGHT (Transact-SQL)
資料類型 (Transact-SQL)
字串函數 (Transact-SQL)