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

コンマ区切りの NVARCHAR を SQL Server 2005 のテーブル レコードに変換する方法は?

    の可能性のある重複コンマ区切りの値を区切り、SQL サーバーのテーブルに格納 .

    カンマ区切り値から正確なものを試してください表 :

    CREATE FUNCTION [dbo].[ufn_CSVToTable] ( @StringInput VARCHAR(8000), @Delimiter nvarchar(1))
    RETURNS @OutputTable TABLE ( [String] VARCHAR(10) )
    AS
    BEGIN
    
        DECLARE @String    VARCHAR(10)
    
        WHILE LEN(@StringInput) > 0
        BEGIN
            SET @String      = LEFT(@StringInput, 
                                    ISNULL(NULLIF(CHARINDEX(@Delimiter, @StringInput) - 1, -1),
                                    LEN(@StringInput)))
            SET @StringInput = SUBSTRING(@StringInput,
                                         ISNULL(NULLIF(CHARINDEX(@Delimiter, @StringInput), 0),
                                         LEN(@StringInput)) + 1, LEN(@StringInput))
    
            INSERT INTO @OutputTable ( [String] )
            VALUES ( @String )
        END
    
        RETURN
    END
    GO
    

    XML を使用して別の方法で要件を確認します:

    DECLARE @param NVARCHAR(MAX)
    SET @param = '1:0,2:1,3:1,4:0'
    
    SELECT 
         Split.a.value('.', 'VARCHAR(100)') AS CVS  
    FROM  
    (
        SELECT CAST ('<M>' + REPLACE(@param, ',', '</M><M>') + '</M>' AS XML) AS CVS 
    ) AS A CROSS APPLY CVS.nodes ('/M') AS Split(a)
    


    1. フィルタリング時に同じフィールドを使用すると、実行時間が異なるのはなぜですか? (異なるインデックスの使用法)

    2. パスワードが現在のポリシー要件を満たしていません

    3. MySQLSUMクエリは非常に遅い

    4. あるコンピュータから別のコンピュータへのmysqlデータベースのコピー