从逗号分隔的 INT 字符串创建临时表 [重复]

Posted

技术标签:

【中文标题】从逗号分隔的 INT 字符串创建临时表 [重复]【英文标题】:Create Temp Table from Comma Seperated String of INT's [duplicate] 【发布时间】:2014-01-03 18:49:01 【问题描述】:

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

【问题讨论】:

可以在 in 语句中使用逗号分隔的整数字符串。为什么要分开? “分享您的发现”的正确方法是使用Community Wiki。 使用社区 Wiki 传播声音并分享您的发现 【参考方案1】:
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;

【讨论】:

以上是关于从逗号分隔的 INT 字符串创建临时表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Oracle (> 11g) 中从逗号分隔列表创建表 - 输入字符串限制 4000 个字符

列中的重复值

PL SQL从用逗号分隔的字符串创建数字数组[重复]

从逗号分隔的字符串中删除重复项 (Amazon Redshift)

MySQL查询从字段中删除重复值[重复]

从 CSV 文件(逗号分隔)创建 postgres 外部表,该文件有一个电子邮件列,其中多个电子邮件地址用逗号分隔