LEN (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス

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

Note

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

Transact-SQL 構文表記規則

構文

LEN ( string_expression )  

引数

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

戻り値の型

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

SC の照合順序を使用する場合、返される整数値では、UTF-16 サロゲート ペアが 1 文字としてカウントされます。 詳細については、「 Collation and Unicode Support」を参照してください。

解説

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];  

Note

特定の文字列式にエンコードされた文字数を取得するには 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)