SQLで文字列を3分割する

プログラミング SQL Server

どうしてもSQLServerで特定の文字で文字列を3分割する必要があったので、調査しました。

スポンサーリンク

SQLで文字列を3分割する

どうしてもSQLServerで特定の文字で文字列を3分割する必要があったので、調査しました。

せっかくなのでメモ書きです。

関数が無いので自作する

そもそもSQLServerには文字列を分割する関数がないようなので、自作を余儀なくされました。

Declare @targetstr varchar(max)='1234|5678|9012'
Declare @separator varchar(max)='|'

SELECT
   SUBSTRING( @targetstr, 1, CHARINDEX( @separator, @targetstr ) - 1 ) AS No1
  ,SUBSTRING( @targetstr, CHARINDEX( @separator, @targetstr ) + 1
              , CHARINDEX( @separator, @targetstr, CHARINDEX( @separator, @targetstr ) + 1 )
               - CHARINDEX( @separator, @targetstr ) - 1 ) AS No2
  ,SUBSTRING( @targetstr, CHARINDEX( @separator, @targetstr,
               CHARINDEX( @separator, @targetstr ) + 1 ) + 1, 
               Len( @targetstr ) - CHARINDEX( @separator, @targetstr
               , CHARINDEX( @separator, @targetstr ) + 1 )) AS No3

実行結果は

     No1   No2   No3
    1234  5678  9012

SUBSTRINGとCHARINDEXを駆使です。
関数かストアドプロシジャなどにしておけば使いまわしができます。

タイトルとURLをコピーしました