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

T-SQLで同等の分割関数?

    これを試してください

    DECLARE @xml xml, @str varchar(100), @delimiter varchar(10)
    SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15'
    SET @delimiter = ','
    SET @xml = cast(('<X>'+replace(@str, @delimiter, '</X><X>')+'</X>') as xml)
    SELECT C.value('.', 'varchar(10)') as value FROM @xml.nodes('X') as X(C)
    

    または

    DECLARE @str varchar(100), @delimiter varchar(10)
    SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15'
    SET @delimiter = ','
    ;WITH cte AS
    (
        SELECT 0 a, 1 b
        UNION ALL
        SELECT b, CHARINDEX(@delimiter, @str, b) + LEN(@delimiter)
        FROM CTE
        WHERE b > a
    )
    SELECT SUBSTRING(@str, a,
    CASE WHEN b > LEN(@delimiter) 
        THEN b - a - LEN(@delimiter) 
        ELSE LEN(@str) - a + 1 END) value      
    FROM cte WHERE a > 0
    

    同じことを行う他の多くの方法はここにありますコンマ区切りの文字列を分割する方法は?



    1. SQLServer整数をバイナリ文字列に変換する

    2. 変数を使用したSQL使用ステートメント

    3. クラスター化されたインデックスとクラスター化されていないインデックスの違いは何ですか?

    4. MariaDBで先行ゼロで数値を埋める方法