代码之家  ›  专栏  ›  技术社区  ›  Paul

你的Nvarchar()有多大

  •  5
  • Paul  · 技术社区  · 17 年前

    我发现使用这个让我陷入了旧的“字符串将被截断”的麻烦。我知道可以通过限制输入框来防止这种情况,但如果用户的地址行确实超过255,则应该允许这样做。

    我的nvarchar应该有多大(????)

    4 回复  |  直到 17 年前
        1
  •  4
  •   marc_s MisterSmith    17 年前

    我的建议是:把它们做得和你真正需要的一样大。

    如果你真的需要一个非常大的字段,请使用NVARCHAR/VARCHAR(MAX)——只要它们适合,它们就会存储在你的页面中,如果它们太大,就会被发送到“溢出”存储。

    但是:NVARCHAR在任何时候都会占用两倍的空间——磁盘和SQL Server内存。如果你真的需要它,你就需要它——但你呢

    马克

        2
  •  3
  •   Community Mohan Dere    9 年前

    我个人不使用nvarchar:-)我总是使用varchar。

    然而,我倾向于用100作为名字,1000作为评论。捕获和处理较长的字符串是客户端可以做的事情,比如通过正则表达式,所以SQL只会得到它所期望的数据。

    SQL Server的255“限制”可以追溯到6.5,因为vachar限制为255。SQL Server 7.0+更改为8000,并添加了对unicode的支持

    编辑:

    为什么我不使用nvarchar:双倍内存占用、双倍索引大小、双倍磁盘大小,根本不需要它。我为一家在全球设有办事处的瑞士大公司工作,所以我不是狭隘的。

    这里也讨论了: varchar vs nvarchar performance

        3
  •  0
  •   ddd    17 年前

    这取决于该字段代表什么。如果我正在做一个快速原型,我会保留默认值255。对于评论等,我可能会把它定在1000。

        4
  •  0
  •   Kjetil Klaussen    13 年前

    对于需要有一定限制的列,如姓名、电子邮件、地址等,你应该设定一个合理的最大长度。例如,超过50个字符的名字似乎有点可疑,超过这个大小的输入可能会包含更多的名字。但对于数据库的初始设计,请考虑 尺寸合理,加倍 。因此,对于名字,将其设置为100(如果100是你的“合理大小”,则设置为200)。然后将应用程序投入生产,让用户玩足够长的时间来收集数据,然后检查实际数据 max(len(FirstName)) 那里有任何可疑的价值观吗?50个字符以上吗?找出里面有什么,看看它是否真的是名字。如果不是,输入表单可能需要更好的解释/验证。

    对评论也这样做;将它们设置为 nvharchar(max) 最初。那就回来吧 .取评论的最大长度,加倍,你的专栏就有了一个很好的最大长度。