SQL电子邮件字段应该有多长时间?

Mal*_*ala 87 sql convention varchar

我认识到电子邮件地址基本上可以无限长,所以我在varchar电子邮件地址字段上施加的任何大小都是任意的.但是,我想知道"标准"是什么?你们有多长时间制作它?(姓名字段的相同问题......)

更新:显然,电子邮件地址的最大长度为320(<= 64名称部分,<= 255域).你用这个吗?

ZZ *_*der 160

理论上的限制真的很长,但你真的需要担心这些长的电子邮件地址吗?如果有人无法使用100-char电子邮件登录,您真的关心吗?我们实际上更喜欢他们不能.

一些统计数据可能会对这个问题有所了解.我们分析了一个拥有超过1000万个电子邮件地址的数 这些地址未得到确认,因此存在无效地址.这是一些有趣的事实,

  1. 有效期最长的是89.
  2. 我们的列(255)有数百个较长的,但它们显然是通过视觉检查伪造的.
  3. 长度分布的峰值为19.
  4. 没有长尾巴.38后,一切都急剧下降.

我们通过丢弃超过40的任何东西来清理数据库.好消息是没有人抱怨,但坏消息是没有很多记录得到清理.

  • 谢谢你的常识.每个人都说"让它成为320!" 请*请*输入一个320个字符的电子邮件地址,仔细看看,然后问问自己是否有人会在你的应用中使用这样的地址. (31认同)
  • 40?猜猜你当时是一个正式讨厌Facebook代理电子邮件的开发者俱乐部(又名 - apps+71659911993.252400001.671333361e563e7852e650c93c3b821c@proxymail.facebook.com).我实际上讲的是90的大小......有趣的是,它与你名单上的#1很相配. (9认同)
  • 多年来我使用了120个变量字符.现实世界的逻辑是,即使有人准备填补你的320 varchar字段...我打赌他们有一个40字母替代电子邮件只是站在旁边 (9认同)

Eri*_*ric 16

我过去刚刚做了255,因为这是如此根深蒂固的短暂但不太短的输入标准.那,我是一个习惯的生物.

但是,由于最大值是319,我会nvarchar(320)在列上做.要记住了@!

nvarchar不会使用您不需要的空间,因此如果您只有20个字符的电子邮件地址,则只占用20个字节.这是相对于一个nchar始终占据其最大(它的权利垫用空格值).

我也用它nvarchar代替,varchar因为它是Unicode.鉴于电子邮件地址的波动性,这绝对是可行的方法.

  • thisemailaddressisonly160charslong-thatishalfofwhatyousuggest-iknowperformancewontusuallybeanissue@butuserswithnoemailaddressunder100charswillNEVERbeanissue.com (9认同)
  • 255 + 64 = 319,320正在计算@ (2认同)

MGO*_*wen 9

以下电子邮件地址仅为94个字符:

i.have.a.really.long.name.like.seetharam.krishnapillai@AReallyLongCompanyNameOfSomeKind.com.au

  • 组织实际上会给你一封很长的电子邮件吗?
  • 如果他们足够愚蠢,你真的会使用这样的电子邮件地址吗?
  • 请问有人吗?当然不是.打字太长,难以记住.

即使是一个有着92年历史的技术专家也会想出如何注册一个不错的短邮件地址,而只是使用它,而不是在你的注册页面输入.

磁盘空间可能不是问题,但允许用户输入字段比它们需要的时间长许多至少有两个问题:

  • 显示它们可能会弄乱你的用户界面(充其量它们会被切断,最糟糕的是它们会推动你的容器和边缘)
  • 恶意用户可以使用您无法预料的事情(例如黑客使用免费在线API存储大量数据的情况)

我喜欢50个字符:

123456789.123456789.123456789@1234567890123456.com

如果百万用户中的一个用户必须使用他们的其他电子邮件地址来使用我的应用程序,那就这样吧.

(统计数据显示,实际上没有人为电子邮件地址输入超过40个字符,例如:ZZ Coder的答案/sf/answers/90814671/)


Sas*_*asQ 6

根据本文,基于适当的 RFC 文档,它不是 320,而是 254:http : //www.eph.co.uk/resources/email-address-length-faq/

编辑:使用 WayBack 机器: https ://web.archive.org/web/20120222213813/http://www.eph.co.uk/resources/email-address-length-faq/

电子邮件地址的最大长度是多少?

254 个字符

关于最大有效电子邮件地址大小似乎有些混乱。大多数人认为它是 320 个字符(用户名 64 个字符 + 域 255 个字符 + @ 符号 1 个字符)。其他来源建议 129 (64 + 1 + 64) 或 384 (128+1+255,假设用户名的长度在未来加倍)。

这种混淆意味着你应该注意“健壮性原则”(“开发人员应该仔细编写与现有 RFC 密切相关的软件,但接受和解析可能与这些 RFC 不一致的同行的输入。” - 维基百科)在编写处理以下问题的软件时电子邮件地址。此外,一些软件可能会因幼稚的假设而瘫痪,例如认为 50 个字符就足够了(示例)。您的 200 个字符的电子邮件地址在技术上可能是有效的,但如果大多数网站或应用程序拒绝它,这对您没有帮助。

实际的最大电子邮件长度目前为 254 个字符:

“RFC 3696 的原始版本确实说 320 是最大长度,但 John Klensin (ICANN) 随后承认这是错误的。”

“这是由域的最大长度(255 个字符)+邮箱的最大长度(64 个字符)+@ 符号 = 320 个字符的简单算术引起的。错误。这个鸭子实际上记录在 RFC3696 的原始版本中。它已在勘误表中更正。实际上 RFC5321 对 SMTP 事务的路径元素有 256 个字符的限制。但这包括电子邮件地址周围的尖括号,因此电子邮件地址的最大长度为 254 个字符。” - 多米尼克·塞耶斯

  • 该链接不再有效。这就是为什么建议粘贴相关信息的原因。 (4认同)