ما نوع البيانات التي ينبغي استخدامها لتخزين أرقام الهاتف في SQL Server 2005?

StackOverflow https://stackoverflow.com/questions/75105

  •  09-06-2019
  •  | 
  •  

سؤال

لا تحتاج إلى تخزين أرقام الهاتف في الجدول.يرجى تشير إلى نوع البيانات التي يجب استخدامها ؟ انتظر.الرجاء القراءة قبل أن تصل الرد..

هذا المجال يحتاج إلى فهرستها بشكل كبير كما مندوبي المبيعات يمكن أن استخدم هذا الحقل للبحث (بما في ذلك البرية الطابع البحث).

اعتبارا من الآن, نحن نتوقع أرقام الهاتف تأتي في عدد من الأشكال (من ملف XML).هل يجب أن أكتب محلل لتحويل صيغة موحدة?يمكن أن يكون هناك الملايين من البيانات (مع التكرارات) و أنا لا أريد أن ربط موارد الخادم (في تجهيزها كثيرا) في كل مرة بعض البيانات المصدر يأتي من خلال..

أي اقتراحات هي موضع ترحيب..

تحديث: ليس لدي أي سيطرة على مصدر البيانات.فقط أن هيكل ملف xml القياسية.ترغب في الحفاظ على تحليل xml إلى الحد الأدنى.مرة واحدة هو في قاعدة البيانات واسترجاعها يجب أن تكون سريعة.واحد مجنون اقتراح يحدث هنا هو أنه ينبغي أن تعمل حتى مع اياكس ميزة الإكمال التلقائي (حتى مندوبي المبيعات يمكن أن نرى مطابقة منها فورا).OMG!!

هل كانت مفيدة؟

المحلول

هل هذا ما يلي:

  • الدولية الأرقام ؟
  • تمديد ؟
  • معلومات أخرى إلى جانب العدد الفعلي (مثل "اسأل عن بوبي")?

إذا هذه كلها لا, وأود أن استخدام 10 شار مجال وقطاع جميع بيانات غير رقمية.إذا كان الأول هو " نعم " و اثنين آخرين لا, كنت استخدم اثنين varchar(50) الحقول ، الأصلي المدخلات واحدة مع كل بيانات غير رقمية مخطط المستخدمة في الفهرسة.إذا كان 2 أو 3 نعم, أعتقد أنني سأفعل اثنين من حقول نوع من الجنون محلل لتحديد ما هو امتداد أو غيرها من البيانات والتعامل معها بشكل مناسب.بالطبع يمكن تجنب 2 عمود تفعل شيئا مع المؤشر حيث أنه يجرد من الأحرف الزائدة عند إنشاء مؤشر, لكن أريد أن جعل العمود الثاني و ربما تجريد الحروف مع الزناد.

تحديث:لمواجهة اياكس المسألة قد لا تكون سيئة كما كنت أعتقد.إذا كان هذا هو واقعي الطريق الرئيسي أي شيء يتم على الطاولة, تخزين فقط الأرقام في الثانوية العمود كما قلت ، ثم جعل مؤشر لهذا العمود متفاوت واحد.

نصائح أخرى

نحن نستخدم varchar(15) و بالتأكيد مؤشر على هذا المجال.

والسبب هو أن المعايير الدولية يمكن دعم ما يصل إلى 15 رقما

ويكيبيديا - رقم الهاتف صيغ

إذا كنت لا تدعم الأرقام الدولية ، أوصي تخزين منفصلة من العالم منطقة رمز أو رمز البلد إلى أفضل مرشح استفسارات حتى لا تجد نفسك تحليل وفحص طول رقم الهاتف الخاص بك المجالات للحد عاد المكالمات إلى الولايات المتحدة الأمريكية على سبيل المثال

استخدام CHAR(10) إذا كنت تخزين لنا أرقام الهاتف فقط.إزالة كل شيء ولكن الأرقام.

ربما أنا في عداد المفقودين هنا واضحة ، ولكن لن varchar فترة طويلة بما يكفي أطول من المتوقع رقم الهاتف تعمل بشكل جيد ؟

إذا كنت am في عداد المفقودين شيء واضح, أنا أحب ذلك إذا كان شخص ما قد أشير إليه...

وأود أن استخدام varchar(22).كبيرة بما يكفي لعقد أمريكا الشمالية رقم الهاتف مع التمديد.كنت تريد أن تجرد من كل سيئة '(', ')', '-' الشخصيات ، أو مجرد تحليل كل منهم إلى واحد موحد.

اليكس

SQL Server 2005 بشكل جيد الأمثل فرعية استعلامات النص في فهرسة الحقول varchar.في عام 2005 أنها أدخلت إحصاءات جديدة إلى سلسلة موجز مؤشر المجالات.وهذا يساعد بشكل كبير مع النص الكامل البحث.

باستخدام varchar هو غير فعالة جدا.استخدام نوع المال و إنشاء مستخدم أعلنت نوع "phonenumber" ، إنشاء قاعدة تسمح فقط أرقام إيجابية.

إذا كنت تعلن أنها (19,4) يمكنك تخزين حتى 4 أرقام تمديد تكون كبيرة بما فيه الكفاية الدولية أرقام ، يستغرق سوى 9 بايت من التخزين.كما الفهارس العاجل.

nvarchar مع تجهيزها إلى توحيدها قدر الإمكان.عليك ربما تريد استخراج امتداد وتخزينها في حقل آخر.

تطبيع البيانات ثم المتجر كما varchar.تطبيع يمكن أن تكون خادعة.

التي ينبغي أن تكون مرة واحدة ضرب.ثم سجل جديد يأتي في أنت مقارنتها تطبيع البيانات.يجب أن تكون سريعة جدا.

منذ كنت في حاجة إلى استيعاب العديد من الهواتف المختلفة عدد من الأشكال (و ربما تشمل أشياء مثل امتداد.... الخ) قد جعل معظم بمعنى أن مجرد التعامل معها كما تفعل أي دولة أخرى varchar.إذا تمكنت من السيطرة على المدخلات ، يمكن أن تتخذ عددا من النهج لجعل البيانات أكثر فائدة ، لكن الأمر لا يبدو بهذه الطريقة.

بمجرد أن تقرر ببساطة التعامل معها مثل أي سلسلة أخرى ، يمكنك التركيز على التغلب على المسائل التي لا مفر منها حول البيانات السيئة ، غامضة رقم الهاتف صيغة وأي شيء آخر سوف يطفو على السطح.وسيكون التحدي في بناء جيد استراتيجية البحث عن البيانات و لا كيف يمكنك تخزينه في رأيي.هو دائما مهمة صعبة الاضطرار إلى التعامل مع كومة كبيرة من البيانات التي كان لديك أي سيطرة على جمع.

استخدام SSIS لاستخراج ومعالجة المعلومات.بهذه الطريقة سيكون لديك تجهيز ملفات XML فصل من SQL Server.يمكنك أيضا القيام SSIS التحولات على خادم منفصل إذا لزم الأمر.تخزين أرقام الهاتف في شكل موحد باستخدام VARCHAR.NVARCHAR سيكون لا لزوم لها وبما أننا نتحدث عن أرقام ربما بضعة آخر حرف ، مثل '+', ' ', '(', ')' و '-'.

استخدام varchar الحقل مع طول قيود.

هذا أمر شائع إلى حد ما إلى استخدام "س" أو "تحويلة" للإشارة إلى امتداد ، بحيث تسمح 15 حرفا (الدعم الدولي الكامل) + 3 (ل "تحويلة") بالإضافة إلى 4 (من أجل تمديد نفسها) إعطاء ما مجموعه 22 حرفا.يجب أن تبقي لكم آمنة.

بدلا من ذلك, تطبيع على المدخلات لذلك أي "تحويلة" تحصل على ترجمتها إلى "x" ، وإعطاء أقصى 20.

أدرك أن هذا الموضوع قديم ولكن من الجدير بالذكر ميزة تخزين كما رقمية نوع التنسيق الأغراض ، وتحديدا في .NET framework.

أي

.DefaultCellStyle.Format = "(###)###-####" // Will not work on a string

فمن الأفضل دائما أن يكون لديك جداول منفصلة متعددة الكرام سمات مثل رقم الهاتف.

كما لديك أي سيطرة على مصدر البيانات بحيث يمكنك تحليل البيانات من ملف XML وتحويله إلى شكل مناسب بحيث لا يكون هناك أي مشكلة مع صيغ من بلد معين وتخزينها في طاولة منفصلة بحيث الفهرسة والاسترجاع كلا سوف تكون فعالة.

شكرا لك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top