LEN (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库
返回指定字符串表达式的字符数,其中不包含尾随空格。
注意
若要返回用于表示表达式的字节数,请使用 DATALENGTH 函数。
语法
LEN ( string_expression )
参数
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 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
另请参阅
DATALENGTH (Transact-SQL)
CHARINDEX (Transact-SQL)
PATINDEX (Transact-SQL)
LEFT (Transact-SQL)
RIGHT (Transact-SQL)
数据类型 (Transact-SQL)
字符串函数 (Transact-SQL)