2013-02-23 55 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将为您工作。但这并不意味着这是正确的做法。

您应该考虑创建将每个子字符串存储在单独的行或列中的模式。这样数据将更容易阅读,编写,最重要的是搜索。

相关问题