LEN (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统 (PDW)Microsoft Fabric 中的 SQL 分析端点Microsoft Fabric 中的仓库

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

注意

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

Transact-SQL 语法约定

语法

LEN ( string_expression )

参数

string_expression

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

返回类型

如果表达式varchar(max)、nvarchar(maxvarbinary(max)数据类型的 bigint;否则为 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];

注意

用于 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的名字(FirstName)和姓氏(LastName)。

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