LEN (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric のSQL 分析エンドポイント Microsoft Fabric のウェアハウス
指定された文字列式の、末尾の空白を除いた文字数を返します。
Note
式の表記に使用されているバイト数を返すには、DATALENGTH 関数を使用します。
構文
LEN ( string_expression )
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
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)