الانتقال إلى المحتوى الرئيسي
سلسلة نصية ذات طول ثابت يبلغ N بايت (وليست محارف ولا نقاط ترميز). للتصريح عن عمود من النوع FixedString، استخدم الصيغة التالية:
حيث إن N عدد طبيعي. يكون النوع FixedString فعّالًا عندما يكون طول البيانات N بايتًا بالضبط. وفي جميع الحالات الأخرى، يُرجَّح أن يؤدي إلى انخفاض الكفاءة. أمثلة على القيم التي يمكن تخزينها بكفاءة في الأعمدة من النوع FixedString:
  • التمثيل الثنائي لعناوين IP (FixedString(16) لعناوين IPv6).
  • رموز اللغات (ru_RU, en_US … ).
  • رموز العملات (USD, RUB … ).
  • التمثيل الثنائي لقيم hash (FixedString(16) لـ MD5، وFixedString(32) لـ SHA256).
لتخزين قيم UUID، استخدم نوع البيانات UUID. عند إدراج البيانات، فإن ClickHouse:
  • يُكمل السلسلة النصية ببايتات null إذا كانت السلسلة تحتوي على أقل من N بايت.
  • يُصدر الاستثناء Too large value for FixedString(N) إذا كانت السلسلة تحتوي على أكثر من N بايت.
لننظر في الجدول التالي الذي يحتوي على عمود واحد من النوع FixedString(2):
لاحظ أن طول القيمة FixedString(N) ثابت. تُرجع الدالة length القيمة N حتى إذا كانت قيمة FixedString(N) مملوءة فقط ببايتات فارغة، لكن الدالة empty تُرجع 1 في هذه الحالة. يؤدي تحديد البيانات باستخدام بند WHERE إلى نتائج مختلفة بحسب كيفية تحديد الشرط:
  • إذا استُخدم عامل المساواة = أو == أو الدالة equals، فإن ClickHouse لا يأخذ المحرف \0 في الاعتبار، أي إن الاستعلامين SELECT * FROM FixedStringTable WHERE name = 'a'; و SELECT * FROM FixedStringTable WHERE name = 'a\0'; يُرجعان النتيجة نفسها.
  • إذا استُخدم بند LIKE، فإن ClickHouse يأخذ المحرف \0 في الاعتبار، لذا قد يلزم تحديد المحرف \0 صراحةً في شرط التصفية.
آخر تعديل في ٢ يوليو ٢٠٢٦