شبكة تعلم مع ناو

هل يحتفظ VARCHAR بالمسافات في نهاية النص؟

يحتفظ VARCHAR بالمسافات النهائية التي تدخلها ضمن نص يقع داخل الحد المسموح للعمود. إذا خزنت حرفًا تتبعه مسافتان، فإن المسافتين تبقيان جزءًا من القيمة المسترجعة. يمكن التحقق من ذلك بقياس طول النص بدل الاعتماد على عرضه بصريًا، لأن بعض الواجهات تجعل المسافات في نهاية الخلايا صعبة الملاحظة.

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

مثال

CREATE TABLE customers (
  label VARCHAR(5)
);
INSERT INTO customers (label) VALUES ('A  ');
SELECT CHAR_LENGTH(label) AS saved_length,
       CHAR_LENGTH(RTRIM(label)) AS trimmed_length
FROM customers;

باختصار: يحتفظ VARCHAR بالمسافات النهائية هنا، ويزيلها RTRIM فقط من نتيجة التعبير.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.