首页 文章

人名“姓名”字段的合理长度限制是多少?

提问于
浏览
126

我有一个简单的webform,允许未经身份验证的用户输入他们的信息,包括姓名 . 我给名字字段限制了50个字符,以便与我的数据库表一致,其中字段是varchar(50),但后来我开始怀疑 .

使用像Text列类型这样的东西更合适,还是应该将名称的长度限制在合理的范围内?

我正在使用SQL Server 2005,以防您的回复中的问题 .

EDIT: 我没有看到有关类似问题的this broader question .

11 回答

  • 6

    你真正要问的是一个相关但却截然不同的问题:为了使它们适合数据库,我多久要截断一次名字?答案取决于不同长度的名称的频率以及所选的最大长度 . 对数据库使用的资源的担忧 balancer 了这种担忧 . 考虑到varchar字段的不同最大长度之间的开销差异很小,我通常会错误地从不被强制截断名称并使字段像我一样大 .

  • 5

    平均名字大约是6个字母 . 这留下了43个姓氏 . :)如果你愿意,似乎你可以缩短它 .

    主要问题是你认为你会有多少行?我不认为varchar(50)会在你获得数百万行之前杀死你 .

  • 3

    请注意,许多 cultures 经常被称为姓氏 . 例如,如果您正在与西班牙人交往,他们会欣赏将姓氏与他们的'surname'分开 .

    最好的办法是为名称组件定义数据类型,将其用于姓氏的数据类型,并根据区域设置进行调整 .

  • 8

    取决于谁将使用您的数据库,例如非洲名称将使用varchar(20)作为姓氏和名字分隔 . 然而,它因国家而异,但为了节省您的数据库资源和内存,将单独的姓氏和名字字段分开并使用varchar(30)认为这样可行 .

  • 25

    UK Government Data Standards Catalogue为每个给定名称和系列名称建议35个字符,或者为单个字段保留全名70个字符 .

  • 1

    我知道我迟到了这一点,但无论如何我会添加这个评论,因为其他人可能会在未来有类似的问题 .

    请注意根据区域设置调整列大小 . 首先,它会让您陷入维护噩梦,撇开人们迁移的事实,并随身携带他们的名字 .

    例如,拥有这些额外姓氏的西班牙人可以移居到英语国家,并且可以合理地期望使用他们的全名 . 除了姓氏之外,俄罗斯人还有一些patronymics,一些非洲名字可能比大多数欧洲名字长得多 .

    考虑到潜在的行数,尽量使每列尽可能宽 . 我使用40个字符作为名字,其他给定的名字和姓氏,从未发现任何问题 .

  • 129

    我通常使用varchar(255)(255是MySQL中varchar类型的最大长度) .

  • 0

    如果它是一个字段中的全名,我通常会在第一个和第二个字段中使用128 - 64/64在不同的字段中 - 您根本就不知道 .

  • 1

    @Ian Nelson:我想知道其他人是否看到那里的问题 .

    假设你有分割字段 . 总共70个字符,名字35个,姓氏35个 . 但是,如果您有一个字段,则忽略用于分隔名字和姓氏的空格,将您更改为1个字符 . 当然,它只是“一个”一个角色,但这可能会让某个人输入他们的全名而另一个人没有 . 因此,我会将该建议更改为“每个给定名称和姓氏35个字符,或者单个字段包含71个字符以保存全名” .

  • 2

    在英国,有一些政府标准成功处理了大部分英国人口 - 护照办公室,驾驶员和车辆许可机构, Contract 民意调查办公室和NHS . 显然,他们使用不同的标准 .

    由Deed民意调查更改你的名字allows 300 characters;

    您的姓名长度没有法律限制,但我们会为您的全名限制300个字符(包括空格) .

    NHS uses 70 characters for patient names

    患者姓名格式/长度:最大值an70

    护照办公室allows 30+30 first/last和驾驶执照(DVLA)共计30个 .

    请注意,其他组织对他们所生成的文件将显示的内容有自己的限制 - 对于HM Passport Office,您的姓名和姓氏的限制为30个字符,DVLA的限制为30个字符 . 你的全名 .

  • 2

    我们用50 .

相关问题