SQL道場 文字列関数 LEFT関数

SQLで文字列の左部分を取り出すLEFT関数について記載しています。

対応データベースSQL Server MySQL DB2 Access

LEFT関数の文法

SELECT LEFT(文字列,文字数) FROM テーブル
引数文字列文字列型
文字数整数型
返値文字列型 編集後の文字列が戻ります。

SQL Server

引数文字列文字データまたはバイナリ データの式。また、定数、変数、または列を指定できます。
文字数返される character_expression の文字数を指定する正の整数です。
引数の文字数が負の場合、エラーが返されます。
integer_expression が bigint 型で、値が大きい場合、character_expression には varchar(max) などのラージ データ型を使用する必要があります。
返値引数の文字列が非 Unicode 文字データ型の場合は、varchar を返します。
引数の文字列が Unicode 文字データ型の場合は、nvarchar を返します。

LEFT関数は指定された文字列の左側から指定した文字数分を取り出します。MySQL、SQL Server、Accessでは漢字も1文字として数えられます。DB2では文字数はバイト単位で指定します。また、引数が NULL である場合は NULL を返します。引数にマイナスを指定した場合は、0と同じ挙動となります。

文字列の右部分を取り出す場合はRIGHT関数を使います。

この関数はマルチバイトセーフです。

SQL Server

SC 照合順序を使用する場合、文字数パラメーターは UTF-16 サロゲート ペアを 1 文字としてカウントします。

実行例

MySQLの実行例

/* MySQL 左から3文字分取り出すサンプル */
SELECT STR,LEFT(STR,3) FROM testdb.WORK;
LEFT関数サンプル実行結果

対象の文字列よりも大きな数字を指定したとき

全文字列が返されます。

/* MySQL 対象の文字列より大きな数字を指定したときのサンプル */
SELECT STR,LEFT(STR,10) FROM testdb.WORK;
LEFT関数サンプル実行結果

取り出す文字数を0とした場合

空が返されます。

/* MySQL 取り出す文字数に0を指定したサンプル */
SELECT STR,LEFT(STR,0) FROM testdb.WORK;
LEFT関数サンプル実行結果

SQLServerの実行例

/* SQLServer 左から3文字分取り出すサンプル */
SELECT [STR],LEFT([STR],3) FROM [testdb].[dbo].[WORK];
LEFT関数サンプル実行結果

対象の文字列よりも大きな数字を指定したとき

全文字列が返されます。

/* SQLServer 対象の文字列より大きな数字を指定したときのサンプル */
SELECT [STR],LEFT([STR],20) FROM [testdb].[dbo].[WORK];
LEFT関数サンプル実行結果

取り出す文字数を0とした場合

空が返されます。

/* SQLServer 取り出す文字数に0を指定したサンプル */
SELECT [STR],LEFT([STR],0) FROM [testdb].[dbo].[WORK];
LEFT関数サンプル実行結果