سلسلة نصية ذات طول ثابت يبلغ 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 صراحةً في شرط التصفية.
آخر تعديل في ٢ يوليو ٢٠٢٦