LEN (Transact-SQL)

适用于:yesSQL Server(所有支持的版本)YesAzure SQL 数据库YesAzure SQL 托管实例yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

返回指定字符串表达式的字符数,其中不包含尾随空格。

注意

若要返回用于表示表达式的字节数,请使用 DATALENGTH 函数。

Topic link iconTransact-SQL 语法约定

语法

LEN ( string_expression )  

注意

若要查看 SQL Server 2014 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

string_expression
要计算的字符串表达式。 string_expression 可以是常量、变量,也可以是字符列或二进制数据列

返回类型

bigint(如果 expression 的数据类型为 varchar(max)、nvarchar (max) 或 varbinary(max));否则为 int

如果使用 SC 排序规则,则返回的整数值将 UTF-16 代理项对作为单个字符计数。 有关详细信息,请参阅 排序规则和 Unicode 支持

备注

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)