2016-10-28 50 views
0

我試圖將我的表中設置爲INT的列中的逗號分隔字符串添加到列中。 我用它來引用一個類別ID,但現在我想添加更多的可能性不止一個類別。在SQL中輸入以逗號分隔的字符串到INT列中

想到我可以通過輸入一個字符串來實現這一點:1,2,3而不是1,但我得到錯誤,在這個單元格中更改的值不被認爲是有效的。

這是否意味着我需要將該列更改爲VARCHAR而不是INT?

+1

您所描述的內容聽起來像是多對多的關係。解決這個問題的正確方法不是將一堆數據填充到單個單元格中。這是一場噩夢。您嘗試建模的數據稱爲關聯實體。你處理這個問題的方式稱爲橋接表。這意味着如果您創建具有兩列的第三個表(ProductID和CategoryID)。然後,爲每個產品的每個類別添加一行到該表。 –

+0

謝謝Sean我現在理解得好一點。我會查找關聯條目以更好地理解。 – UserSN

回答

7

不,這意味着您應該設置合適的表來支持一對多的關係。也就是說,您需要單獨的,而不是varchar列中的虛假數據表示。

爲什麼?那麼,SQL有這個偉大的列表數據結構,稱爲。另外:

  • 數字應該以原生格式存儲,而不是字符串。
  • SQL具有(相對)較差的函數來處理字符串。
  • 列上的操作不會利用索引。
  • 如果數字表示另一個表中的ID,則不能聲明正確的外鍵引用。
+0

你能舉個例子嗎? – UserSN

+0

我有一個單獨的表格,列出了我的類別和一個唯一的ID。我使用ID來引用主表上的哪些行與我的輔助表上的類別匹配。 – UserSN

+0

@AlexP。 。 。你應該問一個關於樣本數據的問題,並且描述你想知道關於建立一個合適的聯結表的問題。 –

相關問題