sql >> データベース >  >> RDS >> Sqlserver

SQL ServerのLEFT()とSUBSTRING():違いは何ですか?

    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

    1. SQLテーブルの重複レコードを削除するためのストアドプロシージャ

    2. ClusterControl-高度なバックアップ管理-mariabackupパートII

    3. 初心者のためのSQLチュートリアル

    4. ProxySQLロードバランサーをクラスター化する方法