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

SQLServer2008のレコード内のフィールドからの文字列の分割

    CROSSAPPLY を使用します 分割UDFと組み合わせて。私の例で使用している文字列スプリッターは、こちら からのものです。 。

    /* Create function for purposes of demo */
    CREATE FUNCTION [dbo].[fnParseStringTSQL] (@string NVARCHAR(MAX),@separator NCHAR(1))
    RETURNS @parsedString TABLE (string NVARCHAR(MAX))
    AS 
    BEGIN
       DECLARE @position int
       SET @position = 1
       SET @string = @string + @separator
       WHILE charindex(@separator,@string,@position) <> 0
          BEGIN
             INSERT into @parsedString
             SELECT substring(@string, @position, charindex(@separator,@string,@position) - @position)
             SET @position = charindex(@separator,@string,@position) + 1
          END
         RETURN
    END
    go
    
    /* Set up sample data */
    declare @t table (
        IR int,
        CR varchar(100)
    )
    
    insert into @t
        (IR, CR)
        select 1, '1,2' union all
        select 2, '3' union all
        select 3, '4,5,6'
    
    /* Here's the query that solves the problem */
    select t.IR, p.string
        from @t t
            cross apply [dbo].[fnParseStringTSQL](t.CR,',') p
    
    
    /* clean up after demo */
    drop function [dbo].[fnParseStringTSQL]
    



    1. Postgres9で現在の日付を更新するためのトリガー

    2. バックグラウンドスレッドでSQLiteクエリを非同期で実行するにはどうすればよいですか?

    3. 行数が0より大きい場合にデータを挿入しても機能しない

    4. 1回の選択でカテゴリごとに最新の2つのアイテムを取得する方法(mysqlを使用)