在 SQL 的 INT 列中输入逗号分隔的字符串
Posted
技术标签:
【中文标题】在 SQL 的 INT 列中输入逗号分隔的字符串【英文标题】:Entering a comma delimited string into an INT column in SQL 【发布时间】:2016-10-28 19:45:18 【问题描述】:我正在尝试将逗号分隔的字符串添加到我的表中设置为 INT 的列中。 我用它来引用类别 ID,但现在我希望可以添加不止 1 个类别。
认为我可以通过输入如下字符串来完成此操作:1,2,3 而不是仅 1,但我收到错误,即此单元格中的更改值未被识别为有效。
这是否意味着我需要将该列更改为 VARCHAR 而不是 INT?
【问题讨论】:
您所描述的内容听起来像是多对多关系。处理这个问题的正确方法不是将一堆值填充到单个单元格中。这是一场噩梦。您尝试建模的数据称为关联实体。您处理此问题的方式称为桥接表。如果您创建具有两列(ProductID 和 CategoryID)的第三个表,这意味着什么。然后为每个产品的每个类别在此表中添加一行。 谢谢肖恩,我现在理解得更好了。我会查找关联条目以更好地理解。 【参考方案1】:不,这意味着您应该设置适当的表来支持一对多关系。也就是说,您需要一个单独的 表,而不是 varchar 列中的虚假数据表示。
为什么?好吧,SQL 有一个很棒的列表数据结构,称为 table。另外:
数字应该以原生格式存储,而不是字符串。 SQL 处理字符串的功能(相对)较差。 对列的操作不会利用索引。 如果数字代表另一个表中的 id,则不能声明正确的外键引用。【讨论】:
你能给我一个例子吗? 我有一个单独的表格,其中列出了我的类别和唯一的 ID。我使用 ID 来引用主表上的哪些行与辅助表上的类别匹配。 @AlexP 。 . .您应该使用示例数据提出另一个问题,并描述您想了解的有关设置正确连接表的内容。 Sean Lange 的评论帮助我找到了需要查找的内容。我现在正在阅读多对多关系。一旦我有一些代码要显示,我将发布一个新问题。谢谢以上是关于在 SQL 的 INT 列中输入逗号分隔的字符串的主要内容,如果未能解决你的问题,请参考以下文章