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;
対象の文字列よりも大きな数字を指定したとき
全文字列が返されます。
/* MySQL 対象の文字列より大きな数字を指定したときのサンプル */
SELECT STR,LEFT(STR,10) FROM testdb.WORK;
取り出す文字数を0とした場合
空が返されます。
/* MySQL 取り出す文字数に0を指定したサンプル */
SELECT STR,LEFT(STR,0) FROM testdb.WORK;
SQLServerの実行例
/* SQLServer 左から3文字分取り出すサンプル */
SELECT [STR],LEFT([STR],3) FROM [testdb].[dbo].[WORK];
対象の文字列よりも大きな数字を指定したとき
全文字列が返されます。
/* SQLServer 対象の文字列より大きな数字を指定したときのサンプル */
SELECT [STR],LEFT([STR],20) FROM [testdb].[dbo].[WORK];
取り出す文字数を0とした場合
空が返されます。
/* SQLServer 取り出す文字数に0を指定したサンプル */
SELECT [STR],LEFT([STR],0) FROM [testdb].[dbo].[WORK];