ماذا تفعل الكلمة الأساسية COLLATE عند إنشاء مؤشر SQLite؟

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

  •  18-09-2019
  •  | 
  •  

سؤال

بحسب ال وثائق sqlite3,

يحدد جملة Collate بعد كل اسم عمود تسلسل تربيت مستخدما لإدخالات النص في هذا العمود. التسلسل الافتراضي Collenating هو تسلسل Collenating المحدد لهذا العمود في عبارة "إنشاء جدول". أو إذا لم يتم تعريف تسلسل عدم وجود تسلسل خلاف ذلك، يتم استخدام تسلسل Collency Binary المدمج.

ماذا يفعل تسلسل تجميع، وما هو تسلسل تجميع ثنائي؟

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

المحلول

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

نصائح أخرى

يقارن الترتيب الثنائي بايت السلسلة بواسطة البايت، كما هو الحال في جدول Unicode. على سبيل المثال: أ، ب، أ، ب. وسوف يكون طلب حساس لحالة الأحرف: أ، أ، ب، ب.

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

Collate Nocase يؤثر أيضا على استفسارات الحساسة لحالة الأحرف.

إذا كان لديك عمود به هذه القيم: 'AA'، 'AA'

select * from table where col = 'aa'

إذا قمت بإنشاء العمود الخاص بك مع Collate Nocase، فسوف يرجع كل من "AA" و "AA". خلاف ذلك، إذا لم تحدد ذلك، فسيعود فقط "AA".

يمكنك أيضا تحديده في استعلام (هذا أبطأ ثم إذا كنت قد أنشأت العمود الخاص بك مع Collate Nocase)

select * from table where col = 'aa' COLLATE NOCASE
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top