如何在SQL Server表中插入多个值?

Razort4x

我不知道该如何表达这个问题,但可以使用一个示例。所以我有这张桌子

Users

Id          Name
1           Tim
2           Jon
3           Matt

还有另一张桌子

Tags

TagId       TagName
1           Test
2           Other
3           Dummy
4           More

在临时表中,我有这样的结构

TmpUserTags

User            Tags
Tim             Test
Jon             Other, Test
Matt            Dummy, More, Other

所以,我需要做的是从此临时表中,在表中插入UserTags具有相应ID的记录,对于上面给出的示例,结果将是

UserTags

User                TagId
1                   1
2                   2
2                   1
3                   3
3                   4
3                   2 

因此,这是我想要插入的最终结果UserTags但是,由于TmpUserTags每个用户的每一行都可以有许多用逗号分隔的标签,因此我不知道哪种方法是最好的。我可能可以使用while循环(或更确切地说是一个游标)循环遍历中的所有行TmpUserTags,然后针对每一行,以逗号分隔标记,找到其ID,然后将其插入UserTags但这似乎并不是最优化的方法。有人可以建议一些更好的方法吗?

加雷斯

我认为最简单的方法是使用来加入标签列LIKE

CREATE TABLE #Users (ID INT, Name VARCHAR(4));
INSERT #Users (ID, Name)
VALUES (1, 'Tim'), (2, 'Jon'), (3, 'Matt');

CREATE TABLE #Tags (TagID INT, TagName VARCHAR(5));
INSERT #Tags (TagID, TagName)
VALUES (1, 'Test'), (2, 'Other'), (3, 'Dummy'), (4, 'More');

CREATE TABLE #TmpUserTags ([User] VARCHAR(4), Tags VARCHAR(100));
INSERT #tmpUserTags ([User], Tags)
VALUES ('Tim', 'Test'), ('Jon', 'Other,Test'), ('Matt', 'Dummy,More,Other');

SELECT  u.ID, t.TagID 
FROM    #TmpUserTags AS ut
        INNER JOIN #Users AS u
            ON u.Name = ut.[User]
        INNER JOIN #Tags AS t
            ON ',' + ut.Tags + ',' LIKE '%,' + t.TagName + ',%';

您也可以沿着创建拆分功能的路线进行操作,以将逗号分隔的列表拆分为行:

CREATE FUNCTION [dbo].[Split](@StringToSplit NVARCHAR(MAX), @Delimiter NCHAR(1))
RETURNS TABLE
AS
RETURN
(   
    SELECT  ID = ROW_NUMBER() OVER(ORDER BY n.Number),
            Position = Number,
            Value = SUBSTRING(@StringToSplit, Number, CHARINDEX(@Delimiter, @StringToSplit + @Delimiter, Number) - Number)
    FROM    (   SELECT  TOP (LEN(@StringToSplit) + 1) Number = ROW_NUMBER() OVER(ORDER BY a.object_id)
                FROM    sys.all_objects a
            ) n
    WHERE   SUBSTRING(@Delimiter + @StringToSplit + @Delimiter, n.Number, 1) = @Delimiter
);

然后,您可以使用:

SELECT  u.ID, t.TagID 
FROM    #TmpUserTags AS ut
        CROSS APPLY dbo.Split(ut.tags, ',') AS s
        INNER JOIN #Users AS u
            ON u.Name = ut.[User]
        INNER JOIN #Tags AS t
            ON t.TagName = s.Value;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将多个值插入SQL Server表

来自分类Dev

如何在SQL Server中将多个表插入多个表

来自分类Dev

如何在表中插入多个默认值

来自分类Dev

如何在SQL Server中的表单元格中插入多个值

来自分类Dev

如何在SQL Server中使用单个查询在多个表中插入数据?

来自分类Dev

如何在SQL Server中拆分字符串并将值插入表中

来自分类Dev

如何在Sql中为插入命令锁定多个表

来自分类Dev

如何在 SQL-Server 的表中管理自动插入时间戳值?

来自分类Dev

SQL Server:如何解析一个列的值并插入到单独的表的多个列中?

来自分类Dev

如何在 SQL Server 中插入填充了 parentCode 的表

来自分类Dev

回滚插入到SQL Server 2005中的多个表

来自分类Dev

如何使用mysqli在表的特定字段中插入多个值?

来自分类Dev

如何在SQL Server中的表中重复值?

来自分类Dev

如何在 SQL Server 变量中存储多个值

来自分类Dev

如何从表中返回标识列值并在SQL Server中插入其他表?

来自分类Dev

使用过程 SQL SERVER 在表中插入值

来自分类Dev

如何在表中插入值

来自分类Dev

我们如何在 SQL Server 2012 的触发器中使用会话值并插入到表中?

来自分类Dev

如何在 Laravel 中使用附加或同步方法在数据透视表中插入多个值

来自分类Dev

如何在插入触发器SQL Server中的变量中使用插入表?

来自分类Dev

如何在不声明 SQL Server 类型的情况下使用参数插入多个值?

来自分类Dev

同时从多个来源插入表-SQL Server

来自分类Dev

如何将其他表中的多个选定行值插入到新表中

来自分类Dev

如何在PostgreSQL中的单个SQL中在父表中插入一行,然后在子表中插入多个行?

来自分类Dev

如何在PostgreSQL中的单个SQL中在父表中插入一行,然后在子表中插入多个行?

来自分类Dev

如何使用SQL将表中的插入值插入数组?

来自分类Dev

SQL Server将查询从临时表插入到多个表中

来自分类Dev

SQL Server将查询从临时表插入到多个表中

来自分类Dev

SQL Server-使用多个值插入

Related 相关文章

  1. 1

    将多个值插入SQL Server表

  2. 2

    如何在SQL Server中将多个表插入多个表

  3. 3

    如何在表中插入多个默认值

  4. 4

    如何在SQL Server中的表单元格中插入多个值

  5. 5

    如何在SQL Server中使用单个查询在多个表中插入数据?

  6. 6

    如何在SQL Server中拆分字符串并将值插入表中

  7. 7

    如何在Sql中为插入命令锁定多个表

  8. 8

    如何在 SQL-Server 的表中管理自动插入时间戳值?

  9. 9

    SQL Server:如何解析一个列的值并插入到单独的表的多个列中?

  10. 10

    如何在 SQL Server 中插入填充了 parentCode 的表

  11. 11

    回滚插入到SQL Server 2005中的多个表

  12. 12

    如何使用mysqli在表的特定字段中插入多个值?

  13. 13

    如何在SQL Server中的表中重复值?

  14. 14

    如何在 SQL Server 变量中存储多个值

  15. 15

    如何从表中返回标识列值并在SQL Server中插入其他表?

  16. 16

    使用过程 SQL SERVER 在表中插入值

  17. 17

    如何在表中插入值

  18. 18

    我们如何在 SQL Server 2012 的触发器中使用会话值并插入到表中?

  19. 19

    如何在 Laravel 中使用附加或同步方法在数据透视表中插入多个值

  20. 20

    如何在插入触发器SQL Server中的变量中使用插入表?

  21. 21

    如何在不声明 SQL Server 类型的情况下使用参数插入多个值?

  22. 22

    同时从多个来源插入表-SQL Server

  23. 23

    如何将其他表中的多个选定行值插入到新表中

  24. 24

    如何在PostgreSQL中的单个SQL中在父表中插入一行,然后在子表中插入多个行?

  25. 25

    如何在PostgreSQL中的单个SQL中在父表中插入一行,然后在子表中插入多个行?

  26. 26

    如何使用SQL将表中的插入值插入数组?

  27. 27

    SQL Server将查询从临时表插入到多个表中

  28. 28

    SQL Server将查询从临时表插入到多个表中

  29. 29

    SQL Server-使用多个值插入

热门标签

归档