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


ЛЕН (Transact-SQL)

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

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

Примечание.

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

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

Синтаксис

LEN ( string_expression )

Аргументы

string_expression

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

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

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

Если вы используете параметры сортировки SC, возвращаемое целочисленное значение подсчитывает суррогатные пары UTF-16 как один символ. Для получения дополнительной информации см. Сортировка и поддержка Юникода.

Замечания

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

Примеры

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

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

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

В следующем примере возвращается количество символов в столбце FirstName и имя () и имя семьи (FirstNameLastName) сотрудников, расположенных в 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