Mysql 从INT';的逗号分隔字符串创建临时表;s

Mysql 从INT';的逗号分隔字符串创建临时表;s,mysql,sql,database,comma,table-variable,Mysql,Sql,Database,Comma,Table Variable,我想在这里使用一个临时表和一个WHILE子句来分享我的发现。我将一个逗号分隔的INT字符串分隔开,以便在in语句中使用。DECLARE@fk\u ArtworkType\u ID varchar(20)='1,2,13' DECLARE @fk_ArtworkType_ID varchar(20) = '1, 2, 13' SET @fk_ArtworkType_ID = REPLACE(@fk_ArtworkType_ID, ' ', '') DECLARE @ArtworkTypeIDT

我想在这里使用一个临时表和一个WHILE子句来分享我的发现。我将一个逗号分隔的INT字符串分隔开,以便在in语句中使用。

DECLARE@fk\u ArtworkType\u ID varchar(20)='1,2,13'
DECLARE @fk_ArtworkType_ID varchar(20) = '1, 2, 13' 
SET @fk_ArtworkType_ID = REPLACE(@fk_ArtworkType_ID, ' ', '')

DECLARE @ArtworkTypeIDTable TABLE (fk_ArtworkType_ID int)
DECLARE @Count AS INT = 0
SET @Count = LEN(@fk_ArtworkType_ID) - LEN(REPLACE(@fk_ArtworkType_ID, ',', '')) + 1
WHILE @Count > 0
BEGIN
    IF @Count <> 1
        BEGIN 
            INSERT INTO @ArtworkTypeIDTable VALUES(SUBSTRING(@fk_ArtworkType_ID, 0, CHARINDEX(',', @fk_ArtworkType_ID, 0)))
            SET @fk_ArtworkType_ID = SUBSTRING(@fk_ArtworkType_ID, (CHARINDEX(',', @fk_ArtworkType_ID, 0) + 1), LEN(@fk_ArtworkType_ID))
        END
    ELSE
        BEGIN 
            INSERT INTO @ArtworkTypeIDTable VALUES(@fk_ArtworkType_ID)
        END
    SET @Count = @Count - 1
END;
设置@fk\u ArtworkType\u ID=REPLACE(@fk\u ArtworkType\u ID,,“”) 声明@ArtworkTypeIDTable表(fk_ArtworkType_ID int) 将@Count声明为INT=0 设置@Count=LEN(@fk_ArtworkType_ID)-LEN(替换(@fk_ArtworkType_ID,,,,,)+1 而@Count>0 开始 如果@Count 1 开始 插入到@ArtworkTypeIDTable值中(子字符串(@fk_ArtworkType_ID,0,CHARINDEX(',',@fk_ArtworkType_ID,0))) 设置@fk_ArtworkType_ID=SUBSTRING(@fk_ArtworkType_ID,(CHARINDEX(',,@fk_ArtworkType_ID,0)+1),LEN(@fk_ArtworkType_ID)) 结束 其他的 开始 插入@ArtworkTypeId表格值(@fk\u ArtworkType\u ID) 结束 设置@Count=@Count-1 结束;
可以在in语句中使用逗号分隔的整数字符串。为什么要分开?正确的“分享你的发现”方法是使用社区Wiki来传播声音和分享你的发现