SQLServerで指定した文字で文字列を分割する

2018-03-23SQLServer

SQLServerには指定した文字で文字列を分割する関数が用意されていないので、自作する必要があります。
(※SQL Server 2016以降では「STRING_SPLIT」という関数が実装されています。)

SQLServerで指定した文字で文字列を分割する

実行するSQLは以下の通りです。

DECLARE    @separator   VARCHAR(MAX) = ','
DECLARE    @target_str  VARCHAR(MAX)='123,45678'

--文字列を「-」で前後に分割する
SELECT
     SUBSTRING( @target_str, 1, CHARINDEX( @separator, @target_str ) - 1 ) AS before
    ,SUBSTRING( @target_str, CHARINDEX( @separator, @target_str ) + 1, LEN( @target_str ) - CHARINDEX( @separator, @target_str )) AS after

実行結果は

before after
123 45678

になります。