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

SQLServerで文字列を分割する方法

    問題:

    SQLServerで文字列を分割したい。

    例1:

    文があり、それをスペース文字で分割したい。

    ソリューション1:

    SELECT value
    FROM STRING_SPLIT('An example sentence.', ' ');
    

    結果は次のようになります:

    value
    An
    文。

    ディスカッション:

    SQL ServerのSTRING_SPLIT(string、separator)関数は、最初の引数の文字列を2番目の引数の区切り文字で分割します。文を単語に分割するには、その文をSTRING_SPLIT()の最初の引数として指定します 関数と2番目の引数としての''。

    STRING_SPLIT() valueという名前の列になります。文字列の各部分を別々の行に取得するには、STRING_SPLIT(string, separator)から値を選択します 。たとえば、

    SELECT value
    FROM STRING_SPLIT('An example sentence.', ' ');
    

    もちろん、カンマなどの他の区切り文字を使用して文字列を分割することもできます。他の列と同じように、列の名前を変更することもできます。

    例2:

    texts 表、いくつかの文があります。

    これは最初の文です。
    そしてこれがもう1つです。

    文をスペース文字で分割したい。

    ソリューション2:

    SELECT value
    FROM texts
    CROSS APPLY STRING_SPLIT(sentence, ' ');
    

    結果は次のようになります:

    value
    これ
    the
    最初
    文。
    そして
    こちら
    the
    その他
    1つ。

    ディスカッション:

    前の例と同様に、STRING_SPLIT(text、separator)関数は、最初の引数として指定された文字列を区切り文字で分割します。今回は、世話をするためのいくつかの文があります。これらの文はtextsに保存されます テーブル。これが、CROSSAPPLYを使用する必要がある理由です。具体的には

    texts CROSS APPLY STRING_SPLIT(sentence, ' ')
    

    FROMで使用してください 句。これは、右側(STRING_SPLIT(sentence, ' ') )は左側のテーブルの各行に適用されます(texts )。これが、右側が左側のテーブルの列(ここでは、texts 表。)取得するクエリは次のとおりです。

    SELECT value
    FROM texts
    CROSS APPLY STRING_SPLIT(sentence, ' ');
    

    例3:

    texts テーブルには、2つの列があります:id およびsentence

    id
    1 これは最初の文です。
    2 そしてこれがもう1つです。

    文をスペース文字で分割し、文のIDも表示したい。

    ソリューション3:

    SELECT
      id,
      value
    FROM texts
    CROSS APPLY STRING_SPLIT(sentence, ' ');
    

    結果は次のようになります:

    id
    1 これ
    1
    1
    1 最初
    1 文。
    2 そして
    2 こちら
    2
    2 その他
    2 1つ。

    ディスカッション:

    この例は非常に似ていますが、idも確認する必要があります 桁。この列を表示するには、SELECTに追加するだけです。 リストし、コンマを含めることを忘れないでください。結果には、文のIDと文の部分が表示されます。たとえば、最初の文は5つの部分に分割され、IDは1です。 。したがって、結果テーブルの5つの部分すべてのIDは1になります。 。 ID 2の次の文 、も5つの部分に分割され、これらの各部分はid = 2で表示されます。 。


    1. C#を使用してOracleデータベースにBLOBを挿入します

    2. SQLServer2017でデータベースをバックアップする

    3. SQLServerでのSHOWPLAN_XMLのしくみ

    4. MySQLロードエラーを修正するにはどうすればよいですか