【SQL Server】【ストアド】SQL Server における カンマ区切り のデータの扱い

■ カンマ区切りデータを分ける

 * そんなメソッドないので、ストアドで独自実装

サンプル

CREATE FUNCTION Split
(
   @inputeValue VARCHAR(MAX),
   @delimiter CHAR(1)
)
RETURNS @returnTable TABLE(SplitedValue VARCHAR(MAX))
BEGIN
  -- 入力値の最大文字列数を取得
  DECLARE inputeValueLength INT
  SET @inputeValueLength = LEN(@inputeValue) + 1

  -- ループカウンター
  DECLARE loopCount INT
  SET @loopCount = 1

  -- ループで処理するデータ
  DECLARE nextValue VARCHAR(MAX)
  SET @nextValue = ''

  -- ループ
  WHILE(@loopCount < @inputeValueLength + 1)
  BEGIN
    -- 区切り文字 @delimiter があるかどうか
    IF(SUBSTRING(@inputeValue, @loopCount, 1) = @delimiter)
    BEGIN
      -- 戻り値になるデータをセット
      INSERT INTO @returnTable
      SELECT @nextValue

      -- 次に処理するデータをリセット
      SET @nextValue = ''
    END
    ELSE
    BEGIN
      -- 戻り値になるデータをセット
      SET @nextValue = @nextValue + SUBSTRING(@inputeValue, @loopCount, 1)
    END

    --  ループカウントアップ
    @loopCount += 1
  END

  -- 戻り値になるデータをセット
  INSERT INTO @returnTable
  SELECT @nextValue

  RETURN
END

参考文献

http://rope0419.blog19.fc2.com/blog-entry-101.html

■ カンマ区切りデータにする

 * 参考文献参照

参考文献

http://necos-plan.blogspot.jp/2011/12/sqlserver.html
http://blog.livedoor.jp/oolv/archives/370268.html

■ カンマ区切りデータが一意で、条件だけに必要である場合

 * LIKEを使用する

イメージ

LIKE '%' + @code + '%'