次の方法で共有


LEN (Transact-SQL)

Applies to:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

指定された文字列式の、末尾の空白を除いた文字数を返します。

式の表記に使用されているバイト数を返すには、DATALENGTH 関数を使用します。

Transact-SQL 構文表記規則

構文

LEN ( string_expression )

引数

string_expression

評価する文字列 string_expression には、文字データまたはバイナリ データの定数、変数、または列を使用できます。

戻り値の型

varchar(max)nvarchar(max)、または varbinary(max) データ型の場合は bigint。それ以外の場合は int

SC 照合順序を使用している場合、返される整数値は UTF-16 サロゲート ペアを 1 文字としてカウントします。 詳細については、「照合順序および 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