Поделиться через


LEN (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

Возвращает количество символов указанного строкового выражения, исключая конечные пробелы.

Примечание.

Получить число байтов, используемых для представления выражения, можно с помощью функции DATALENGTH.

Соглашения о синтаксисе Transact-SQL

Синтаксис

LEN ( string_expression )  

Аргументы

string_expression
Оцениваемое строковое выражение. Аргумент string_expression может быть константой, переменной или столбцом символьных или двоичных данных.

Типы возвращаемых данных

bigint, если expression имеет тип данных varchar(max), nvarchar(max) или varbinary(max); в противном случае int.

Если используются параметры сортировки SC, то возвращаемое целое значение рассматривает суррогатные пары Юникода UTF-16 как один символ. Дополнительные сведения см. в статье Collation and Unicode Support.

Замечания

Функция LEN исключает конечные пробелы. Если это может создать проблемы, рекомендуется использовать функцию DATALENGTH (Transact-SQL), которая не усекает строку. При обработке строки Юникода 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 — размер данных в байтах для определенного строкового выражения. Эти выходные данные могут быть разными в зависимости от типа данных и типа кодировки, используемой в столбце. Дополнительные сведения об отличиях типов кодировок, используемых для хранения данных, см. в статье Collation and Unicode Support (Поддержка параметров сортировки и Юникода).

Примеры

Следующий пример выбирает число символов и данные по имени людей FirstName, живущих в Australia. В примере используется база данных AdventureWorks.

SELECT LEN(FirstName) AS Length, FirstName, LastName   
FROM Sales.vIndividualCustomer  
WHERE CountryRegionName = 'Australia';  
GO  

Примеры: Azure Synapse Analytics и система платформы аналитики (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)