web-dev-qa-db-ja.com

SQL電子メールフィールドの長さはどれくらいですか?

電子メールアドレスは基本的に無期限に長くなる可能性があるため、varchar電子メールアドレスフィールドに設定するサイズは任意です。しかし、私は「標準」が何であるか疑問に思っていましたか?あなたはどれくらいの時間それを作りますか? (名前フィールドの同じ質問...)

更新:メールアドレスの最大長は320(<= 64名前部分、<= 255ドメイン)のようです。これを使いますか?

85
Mala

理論上の制限は本当に長いですが、これらの長いメールアドレスについて本当に心配する必要がありますか?誰かが100文字のメールでログインできない場合、本当に気になりますか?実際にはできないことを望んでいます。

いくつかの統計データは、問題にいくらかの光を当てるかもしれません。 1000万を超える電子メールアドレスを持つデータベースを分析しました。これらのアドレスは確認されていないため、無効なアドレスがあります。ここにいくつかの興味深い事実があります、

  1. 最長の有効なものは89です。
  2. 私たちのコラムの限界(255)までの長いものが何百もありますが、それらは視覚検査によって明らかに偽物です。
  3. 長さ分布のピークは19です。
  4. ロングテールはありません。 38の後、すべてが急激に低下します。

40を超えるものはすべて破棄して、DBをクリーンアップしました。良いニュースは、誰も苦情を言っていないことですが、悪いニュースは多くのレコードがクリーンアップされていないことです。

156
ZZ Coder

私は過去に255をやったばかりです。なぜなら、それは短い入力の入念な標準だからです。それ、そして私は習慣の生き物です。

ただし、最大値は319なので、列でnvarchar(320)を実行します。 @

nvarcharは不要なスペースを使用しないため、20文字のメールアドレスしかない場合は、20バイトしか使用しません。これはncharとは対照的です。これはalwaysで最大値を取ります(値にスペースを右詰めします)。

Unicodeなので、nvarcharの代わりにvarcharも使用します。電子メールアドレスの変動性を考えると、これは間違いなく進むべき方法です。

16
Eric

次のメールアドレスは94文字のみです。

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

  • 組織は実際に与えるあなたはそのくらいの長さのメールですか?
  • それらが十分に愚かだった場合、あなたは実際にseそのようなメールアドレスですか?
  • anyone?もちろん違います。入力が長すぎて覚えにくい。

92歳のテクノフォーブでさえ、ニースの短いGmailアドレスにサインアップする方法を見つけて、登録ページに入力するのではなく、それを使用するだけです。

ディスク容量はおそらく問題ではありませんが、ユーザー入力フィールドを必要以上に長くすることには少なくとも2つの問題があります。

  • それらを表示すると、UIが混乱する可能性があります(せいぜい、それらは切断され、最悪の場合、コンテナとマージンを押しのけます)
  • 悪意のあるユーザーは予期できないことを行うことができます(ハッカーが無料のオンラインAPIを使用して大量のデータを保存した場合など)

私は50文字が好きです:

[email protected]

100万人に1人のユーザーが私のアプリを使用するために他のメールアドレスを使用する必要がある場合は、そうしてください。

(統計では、誰も実際にメールアドレスに約40文字以上を入力しないことが示されています。例:ZZ Coderの回答 https://stackoverflow.com/a/1297352/87861

8
MGOwen

あなたが本当にそれについて熱心な場合は、ユーザー名varchar(60)、ドメインvarchar(255)を作成してください。次に、単一のフィールドとして実行するよりもわずかに速い、ドメインの使用に関するとんでもない統計を実行できます。最適化について本当に熱心に思っているなら、それはあなたのSMTPサーバーがより少ない接続/より良いバッチ処理でメールを送信できるようにするでしょう。

4
Jeff Ferland

RFC 5321(現在のSMTP仕様、RFC2821は廃止):

4.5.3.1.1。ローカルパート

ユーザー名または他のローカル部分の最大合計長は64です
オクテット。

4.5.3.1.2。ドメイン

ドメイン名またはドメイン番号の最大合計長は255オクテットです。

これはlocalpart @ domainのみに関係し、合計320 ASCII(7ビット)文字)になります。

ローカル部分とドメインを別々のフィールドに分割するなどして、データを正規化する場合は、次のことに注意してください。

  • VERPとして知られる手法は、自動生成されたメールの完全な長さのローカルパートになる可能性があります(ユースケースに関連しない場合があります)
  • ドメインは大文字と小文字を区別しません。ドメイン部分を下げることをお勧めします
  • localpartsでは大文字と小文字が区別されます。 [email protected][email protected]は仕様ごとに技術的に異なるアドレスですが、domain.com mayのポリシーは2つのアドレスを同等として扱うことです。 localpartのケースの折りたたみを、これを行うことが知られているドメインに制限するのが最善です。
3
Wez Furlong

このテキストによると、適切なRFCドキュメントに基づいて、320ではなく254です。 http://www.eph.co.uk/resources/email-address-length-faq/

Edit:WayBack Machineの使用: 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、将来的にユーザー名の長さが2倍になると仮定)を示唆しています。

この混乱は、「堅牢性の原則」に注意する必要があることを意味します(「開発者は既存のRFCに厳密に準拠するソフトウェアを注意深く作成する必要がありますが、それらのRFCと一致しないピアからの入力を受け入れて解析する必要があります。」-ウィキペディア)メールアドレス。さらに、いくつかのソフトウェアは、素朴な仮定、たとえば50文字で十分だと考えています(例)。 200文字のメールアドレスは技術的には有効かもしれませんが、ほとんどのWebサイトまたはアプリケーションがそれを拒否した場合には役に立ちません。

実際の最大メール長は現在254文字です。

「RFC 3696の元のバージョンは、実際には320が最大長であると言っていましたが、John Klensin(ICANN)はその後、これが間違っていることを受け入れました。」

「これは、ドメインの最大長(255文字)+メールボックスの最大長(64文字)+ @記号= 320文字の単純な算術演算から生じます。このカナードは、実際にはRFC3696の元のバージョンで文書化されています。実際には256文字のSMTPトランザクションのパス要素にRFC5321からの制限があります。ただし、これにはメールアドレスを囲む角括弧が含まれているため、メールアドレスの最大長は254文字です。 -ドミニク・セイヤーズ

3
SasQ

私はvarchar(64)を使用しています

1
GibboK

電子メールの場合、仕様に関係なく、実質的に常に512(nvarchar)を使用します。名前と姓は似ています。

本当に、少し余分なデータがあることにどれだけ気を配るかを調べる必要があります。私にとって、ほとんどの場合、それは心配ではないので、私は保守的な側で過ちを犯します。しかし、論理的かつ正確な手段により、スペースを節約する必要があると判断した場合は、そうしてください。しかし、一般的には、フィールドサイズを控えめにしてください、そして人生は良いものでなければなりません。

おそらくすべての電子メールクライアントがRFCをサポートしているわけではないことに注意してください。そのため、それが何を言おうとも、実際にはさまざまなことに遭遇することがあります。

0
Noon Silk