SQL Server環境では、自由に使用できる多くの文字列関数のうちの2つはLEFT()
です。 およびSUBSTRING()
。
これらの関数は似たようなことをしますが、違いがあります。この記事では、これらの機能の主な違いのいくつかを見ていきます。
定義
まず、各関数の機能を見てみましょう。
-
LEFT()
- 指定された文字数の文字列の左側を返します。
-
SUBSTRING()
- 文字、バイナリ、テキスト、または画像式の一部を返します。
したがって、LEFT()
文字列の左側のみを返します。
SUBSTRING()
式の一部を返すだけです(左の部分だけでなく、左、右、または中央のどこかにあります)。
例1-同じ結果
どちらの関数も、左から特定の数の文字を返すために使用できます。
SELECT LEFT('Buckethead', 6) AS [LEFT], SUBSTRING('Buckethead', 1, 6) AS [SUBSTRING];
結果:
+--------+-------------+ | LEFT | SUBSTRING | |--------+-------------| | Bucket | Bucket | +--------+-------------+
ただし、LEFT()
より簡潔です。これは、関数名の文字数が少ないことが一因です。
しかし、それは構文のせいでもあります。 LEFT()
関数は2つの引数(式と返す文字数)のみを必要としますが、SUBSTRING()
3つの引数(式、開始位置、およびその開始位置から戻る文字数)が必要です。
例2–SUBSTRINGの方が優れている場合
SUBSTRING()
LEFT()
よりもはるかに優れています 文字列の途中からデータを取得するとき。実際、leftはそのために設計されていません。本当にLEFT()
を使用したい場合 これを行うには、RIGHT()
を使用するなどのトリックを行う必要があります。 最初の引数として機能します。
例:
SELECT LEFT(RIGHT('Buckethead', 7), 3) AS [LEFT/RIGHT], SUBSTRING('Buckethead', 4, 3) AS [SUBSTRING];
結果:
+--------------+-------------+ | LEFT/RIGHT | SUBSTRING | |--------------+-------------| | ket | ket | +--------------+-------------+
受け入れられるデータ型
LEFT()
関数はテキストを受け入れません およびntext 最初の引数としてのデータ型。 varcharに変換できる他のすべてのデータ型をサポートします またはnvarchar 。
SUBSTRING()
一方、関数は文字を受け入れます 、バイナリ 、テキスト 、 ntext 、および画像 式。
戻り値
LEFT()
varcharを返します 最初の引数が非Unicode文字データ型であり、 nvarchar Unicode文字データ型の場合。
SUBSTRING()
の戻り値 次のとおりです:
式(最初の引数) | リターンタイプ |
---|---|
char / varchar /テキスト | varchar |
nchar / nvarchar / ntext | nvarchar |
バイナリ /バービナリー /画像 | varbinary |