SQL Server環境では、私たちの処分で多くの文字列関数の二つは、LEFT()
とSUBSTRING()
です。
これらの関数は同様のことを行いますが、違いがあります。 この記事では、これらの関数の主な違いのいくつかを見ていきます。
Defintion
まず、各関数が何をするかを見てみましょう。
LEFT()
指定された文字数の文字列の左側の部分を返します。, SUBSTRING()
は、文字、バイナリ、テキスト、またはイメージ式の一部を返します。
SoLEFT()
文字列の左側の部分のみを返します。
SUBSTRING()
単に式の一部を返します(左の部分だけに限定されるものではありません–左、右、または中央のどこかにあります)。
例1-同じ結果
両方の関数を使用して、左から特定の数の文字を返すことができます。
SELECT LEFT("Buckethead", 6) AS , SUBSTRING("Buckethead", 1, 6) AS ;
結果:
+--------+-------------+| LEFT | SUBSTRING ||--------+-------------|| Bucket | Bucket |+--------+-------------+
ただし、LEFT()
はより簡潔です。, これは、関数名に文字が少ないという事実によるものです。
しかし、それは構文のためでもあります。 LEFT()
関数には二つの引数(式と返す文字数)のみが必要ですが、SUBSTRING()
には三つの引数(式、開始位置、およびその開始位置から返,
例2-部分文字列が優れている場合
SUBSTRING()
よりもはるかに優れていますLEFT()
文字列の中央からデータを取得します。 実際には、左はそのために設計されていません。 これを行うには、LEFT()
を本当に使用したい場合は、RIGHT()
最初の引数として関数を使用するなど、いくつかのトリッキーを行う必要があります。,
例:
SELECT LEFT(RIGHT("Buckethead", 7), 3) AS , SUBSTRING("Buckethead", 4, 3) AS ;
結果:
+--------------+-------------+| LEFT/RIGHT | SUBSTRING ||--------------+-------------|| ket | ket |+--------------+-------------+
受け入れられるデータ型
LEFT()
関数は、最初の引数としてtextおよびntextデータ型を受け入れません。 Varcharまたはnvarcharに変換できる他のすべてのデータ型をサポートしています。
一方、SUBSTRING()
関数は、文字、バイナリ、テキスト、ntext、および画像の式を受け入れます。,
戻り値
LEFT()
最初の引数が非Unicode文字データ型の場合はvarcharを返し、Unicode文字データ型の場合はnvarcharを返します。,
The return values for SUBSTRING()
are as follows:
Expression (first argument) | Return type |
---|---|
char/varchar/text | varchar |
nchar/nvarchar/ntext | nvarchar |
binary/varbinary/image | varbinary |