适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统 (PDW)
Microsoft Fabric 中的 SQL 分析端点
Microsoft Fabric 中的仓库
返回指定字符串表达式的字符数,其中不包含尾随空格。
注意
若要返回用于表示表达式的字节数,请使用 DATALENGTH 函数。
语法
LEN ( string_expression )
参数
string_expression
要计算的字符串 表达式 。 string_expression 可以是常量、变量,也可以是字符列或二进制数据列。
返回类型
如果表达式是 varchar(max)、nvarchar(max)或 varbinary(max)数据类型的 bigint;否则为 int。
如果使用 SC 排序规则,则返回的整数值将 UTF-16 代理项对计数为单个字符。 有关详细信息,请参阅 排序规则和 Unicode 支持。
备注
LEN 排除尾随空格。 如果这是个问题,请考虑使用 DATALENGTH 函数,该函数不会剪裁字符串。 如果处理 unicode 字符串, DATALENGTH 则返回一个可能不等于字符数的数字。 以下示例演示 LEN 并 DATALENGTH 带有尾随空格。
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