将多个值添加到SQL server列中

将多个值添加到SQL server列中,sql,sql-server,Sql,Sql Server,我的任务是将黑、白、灰三种颜色的列表放入数据库。只要有人注意到一个新词,就应该简单地将它添加到数据库中。这些单子上几乎没有单词。所以我试图添加一个包含几个单词的内容 在上面你可以看到我的桌子。我想向一个ContentID查询几个单词。 应该是这样的: ContentID Words 1 "Password", "Login", "Configure" 2 ".nl", "

我的任务是将黑、白、灰三种颜色的列表放入数据库。只要有人注意到一个新词,就应该简单地将它添加到数据库中。这些单子上几乎没有单词。所以我试图添加一个包含几个单词的内容

在上面你可以看到我的桌子。我想向一个ContentID查询几个单词。 应该是这样的:

 ContentID                   Words
 1                      "Password", "Login", "Configure"
 2                      ".nl", ".be", ".com"
DECLARE @List TABLE (ID INT, ListName VARCHAR(MAX))
DECLARE @Word TABLE (ID INT, ListID INT, Word VARCHAR(MAX))

INSERT @List (ID, ListName)
VALUES  (0 , 'White'),
        (1 , 'Black')


INSERT @Word (ID, ListID, Word)
VALUES  (0, 0, 'Good'),
        (1, 0, 'Better'),
        (2, 0, 'Best'),
        (3, 1, 'Bad'),
        (4, 1, 'Worse'),
        (5, 1, 'Worstest')


SELECT      L.ID
,           L.ListName
,           STUFF(( SELECT ',' + W.Word AS [text()]
                    FROM @Word AS W
                    WHERE w.ListID = L.ID
                    FOR XML PATH('')
                        ), 1, 1, '' ) test
FROM        @List L
如何向一个ContentID查询多个值?

不要这样做

你的设计有缺陷。字段设计为仅包含一个原子数据项。试图将多个项目塞进一个字段会限制系统的增长,并使未来的工作更加困难

如果您需要沿着这些路线做一些事情,请创建表格,如(非常粗略的草图!):

通过合并两个表,您仍然可以读取单个内容记录的所有单词,但是现在还有许多其他内容向您开放。如果您发现特别需要将它们作为应用程序的逗号分隔列表表来读取,您甚至可以使用for XML PATH(“”)技巧来执行此操作-有关更多信息,请参阅。

(续自注释)您可以执行以下操作:

 ContentID                   Words
 1                      "Password", "Login", "Configure"
 2                      ".nl", ".be", ".com"
DECLARE @List TABLE (ID INT, ListName VARCHAR(MAX))
DECLARE @Word TABLE (ID INT, ListID INT, Word VARCHAR(MAX))

INSERT @List (ID, ListName)
VALUES  (0 , 'White'),
        (1 , 'Black')


INSERT @Word (ID, ListID, Word)
VALUES  (0, 0, 'Good'),
        (1, 0, 'Better'),
        (2, 0, 'Best'),
        (3, 1, 'Bad'),
        (4, 1, 'Worse'),
        (5, 1, 'Worstest')


SELECT      L.ID
,           L.ListName
,           STUFF(( SELECT ',' + W.Word AS [text()]
                    FROM @Word AS W
                    WHERE w.ListID = L.ID
                    FOR XML PATH('')
                        ), 1, 1, '' ) test
FROM        @List L
其结果是:

ID  ListName    test
0   White   Good,Better,Best
1   Black   Bad,Worse,Worstest

非常粗略地说,但要按照这些思路思考。

使用
其中ContentID=1和单词In('Password'、'Login'、'Configure')
?-不明白你的问题(@curiousguy噢,很抱歉我的问题不清楚。我想在一个键中存储多个值?一个内容有一个ID和一组字。我只知道如何在属性字中存储一个值。但我不知道如何在一列中存储多个字。我希望我解释得更好。不要!这是一个非常糟糕的主意,永远不要在一个键中放置多个值e表格单元格。你想完成什么?@Honeybager哦,好了!我的任务是在数据库中放入黑、白、灰三种颜色的列表。每当有人注意到一个新单词时,应该简单地将其添加到数据库中。这些列表中只有很少的单词。所以我正在尝试添加一个包含一些单词的内容。完成后,我将加入这些列表将值(单词)添加到具有正确名称的列表中。我希望我能很好地解释它:S