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 |