1. ホーム
  2. sql-server

[解決済み] SQL Server 2005で電話番号を格納するためにどのようなデータ型を使用する必要がありますか?

2023-03-04 04:10:13

質問

私はテーブルの中に電話番号を格納する必要があります。私は使用する必要がありますどのデータ型を示唆してください? 待ってください。返信を押す前に読んでください.

営業担当者がこのフィールドを検索に使用できるため、このフィールドは大きくインデックス化される必要があります(ワイルドキャラクター検索を含む)。

今のところ、私たちは電話番号が (XML ファイルから) さまざまな形式で提供されることを期待しています。統一された形式に変換するためのパーサーを書く必要がありますか? 何百万ものデータ (重複あり) がある可能性があり、いくつかのソース データが来るたびに (前処理のような活動で) サーバー リソースを拘束したくないのですが、どうしたらよいでしょうか?

どんな提案でも大歓迎です...。

更新しました。 私はソースデータを制御することはできません。ただ、xmlファイルの構造が標準的であること。xmlのパースは最小限に抑えたいと思います。 いったんそれがデータベースにあれば、検索は素早く行われるはずです。Ajaxのオートコンプリート機能(営業担当者がすぐにマッチしたものを見ることができる)と連動させるというのも、この辺りで行われているおかしな提案の一つです。OMG!

どのように解決するのですか?

これは含まれていますか。

  • 国際番号?
  • 内線?
  • 実際の番号以外のその他の情報("bobby"を尋ねてくださいなど)?

これらすべてが「いいえ」なら、私なら 10 文字のフィールドを使用して、数字以外のデータをすべて削除します。1 番目が「はい」で、他の 2 つが「いいえ」なら、2 つの varchar(50) フィールドを使用します。1 つは元の入力用、もう 1 つは数値以外のデータをすべて除去してインデックス付けに使用します。2つまたは3つが「はい」なら、2つのフィールドと、拡張子やその他のデータを判断して適切に処理するための何らかのおかしなパーサーを使用すると思います。もちろん、インデックスを作成するときに余分な文字を除去するようなインデックスで何かをすることで2列目を避けることもできますが、私なら2列目を作成して、おそらくトリガーで文字の除去を行うでしょう。

更新:AJAXの問題に対処するために、それはあなたが考えるほど悪くないかもしれません。これが現実的にテーブルに対して行われる主な方法である場合、私が言ったように、2番目の列に数字だけを格納し、その列のインデックスをクラスタ化されたものにします。