2013-02-23 27 views
-1

我想在我的表中存儲一個字符串。該字符串將包含幾個帶分隔符的字符串,即char「,」。sql varchar中允許的法定字符是什麼?

varchar是否合適?

+0

當然可以。任何可打印的ascii角色都可以(其他人也可以,但是很快就會變得更加技術化)。 – thebjorn 2013-02-23 23:43:39

+1

如果分隔符用於存儲多個值,我強烈建議不要這樣做http://en.wikipedia.org/wiki/First_normal_form – 2013-02-23 23:45:03

+0

而且不要在URL中存儲opt/val列表,例如URL params或字符串數​​組領域。將它們存放在一張桌子裏。 | --ID-- | --opt-- | --val-- | – 2013-02-23 23:56:07

回答

3

是的,VARCHAR是存儲字符串的首選數據類型。

但是,將多個值存儲在同一個字段中並不是首選。多值屬性通常作爲數據庫設計中的表實現。

+0

因此,varchar可以存儲像逗號字符?而且 - 如果你說在相同的字段中存儲多個值是不推薦的,那麼如果我想要存儲這些子字符串的單獨表是不必要的,那麼你有什麼選擇? @EmilVikström – user2057574 2013-02-23 23:51:31

+0

是的,一個VARCHAR字段可以存儲所有字符。你說新表是「不需要」的,但是你已經取消了設計數據庫的正確方法。將多個值存儲在同一個字段中打破了關係數據庫設計的第一範式(1NF)。結果是很難根據這個屬性搜索表,索引不能使用,你不能在屬性中存儲逗號,因爲逗號現在是一個魔術常數,加入這個屬性幾乎是不可能的,分割這個字符串可能會很笨拙在某些編程語言中等等。 – 2013-02-24 11:07:32

1

VARCHAR將爲您工作。但這並不意味着這是正確的做法。

您應該考慮創建將每個子字符串存儲在單獨的行或列中的模式。這樣數據將更容易閱讀,編寫,最重要的是搜索。

相關問題