ما الكنسي طريقة لتخزين التعسفي (ربما وضع علامة) النص في SQL ؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

ماذا الويكي/ستاكوفيرفلوو/الخ.هل عندما يتعلق الأمر تخزين النص ؟ نص كسر في أسطر?هو كسر في طول ثابت قطع?كيف يمكنك أفضل متجر تعسفا طويلة قطع من النص ؟

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

المحلول

nvarchar(max) ftw.لأن أكثر تعقيد الأمور البسيطة سيئة, مفهوم ؟

نصائح أخرى

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

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

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

فيما يتعلق كيو - نوع الاستخدام النص أو BYTEA.إذا كنت بحاجة إلى قراءة عشوائية قطع قد تفكر في الأجسام الكبيرة.

إذا كنت بحاجة للقلق حول حفظ الأشياء مثل تنسيق السلاسل ، ونقلت وغيرها "الغبار المتراكم تحت السرير" في النص ، كما رمز من المرجح أن يكون ، ثم أحرف خاصة تحتاج إلى أن تكون تماما هرب الأولى - على خلاف ذلك على تقديم db, لأنها قد تسبب في نهاية المطاف غير صالح الأوامر التي ستصدر.

معظم لغات البرمجة لديها أدوات للقيام بذلك المدمج أصلا.

أعتقد أن ذلك يعتمد على المكان الذي تريد تخزين النص, إذا كنت بحاجة إلى أشياء مثل المعاملات الخ.

قواعد البيانات مثل SQL Server لديك النوع الذي يمكن تخزين طويلة حقول النص.في SQL Server 2005 وهذا من شأنه أن يكون في المقام الأول nvarchar(max) لفترة طويلة unicode سلاسل نصية.باستخدام قاعدة البيانات يمكنك الاستفادة من المعاملات من السهل النسخ الاحتياطي/استعادة على افتراض أنك تستخدم قاعدة البيانات من أجل أشياء أخرى مثل StackOverflow.com لا.

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

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

شيء أن نتذكر أن كنت ربما تريد أن تكون باستخدام يونيكود أو UTF-8 من الخلق إلى تخزين والعكس بالعكس.وهذا سوف يسمح لك أن دعم لغات إضافية.أي مشكلة مع هذا الترميز آلية فاسدة النص الخاص بك.تاريخيا الناس قد تخلفت ASCII على أساس افتراض أنهم كانوا توفير مساحة القرص.... الخ

ل SQL Server:

استخدام varchar(max) إلى مخزن.أعتقد أن الحد الأقصى هو 2 غيغابايت.

لا تحاول الهروب من النص نفسك.تمرير النص من خلال parameterizing هيكل لا يهرب بشكل صحيح بالنسبة لك.في .صافي كنت إضافة معلمة إلى SqlCommand ، أو مجرد استخدام LinqToSQL (ثم يدير SqlCommand لك).

وأظن ستاكوفيرفلوو تخزين نص في تخفيض السعر في شكل تعسفي الحجم 'نص' عمود.ربما كما UTF8 (ولكن قد يكون UTF16 أو شيء من هذا.أعتقد انه من SQL Server التي لا تعرف الكثير عن).

كقاعدة عامة كنت ترغب في تخزين الأشياء في قاعدة البيانات الخاصة بك في إعادته' شكل ممكن.وهذا هو هل كل فك ، وربما التنظيف, ولكن لا تفعل أي شيء آخر (على سبيل المثال ، إذا كان تخفيض السعر, لا ترميز HTML ، وترك الأمر في الأصلي 'الخام' تنسيق)

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