يعد التعامل مع القيم NULL في SQL جانبًا أساسيًا يجب على كل متخصص في قواعد البيانات فهمه. تمثل NULL القيم المفقودة أو غير المحددة في جدول قاعدة البيانات، ومن الضروري التعامل مع هذه القيم بشكل صحيح لضمان سلامة ودقة عمليات البيانات الخاصة بك. سوف تتعمق هذه المقالة في مفهوم NULL في SQL، وآثاره، والاستراتيجيات المختلفة للتعامل مع القيم NULL.
NULL في SQL هي علامة خاصة تستخدم للإشارة إلى عدم وجود قيمة بيانات في قاعدة البيانات. وهو لا يعادل سلسلة فارغة أو قيمة صفر. بدلا من ذلك، يشير NULL إلى غياب أي قيمة. يمكن أن يؤثر وجود قيم NULL في جدول قاعدة البيانات على نتائج الاستعلامات، خاصة عند إجراء عمليات مثل المقارنات والتجميعات والصلات.
للتحقق مما إذا كانت القيمة فارغة، يمكنك استخدام عوامل التشغيل IS NULL أو IS NOT NULL. على سبيل المثال:
SELECT * FROM employees WHERE manager_id IS NULL;
يسترجع هذا الاستعلام جميع الموظفين الذين ليس لديهم مدير.
لا تعمل المقارنات المباشرة مع NULL باستخدام عوامل المقارنة القياسية (=، !=،
SELECT * FROM employees WHERE manager_id = NULL;
لن يُرجع هذا الاستعلام أي صفوف، حتى لو كانت بعض قيم manager_id فارغة. بدلاً من ذلك، يجب عليك استخدام:
SELECT * FROM employees WHERE manager_id IS NULL;
تتعامل وظائف التجميع مثل SUM وAVG وCOUNT وما إلى ذلك مع القيم NULL بشكل مختلف. على سبيل المثال، يتجاهل SUM وAVG القيم NULL، بينما يمكن لـ COUNT حسابها إذا تم تحديدها بشكل صريح.
SELECT SUM(salary) FROM employees; -- NULL values are ignored SELECT AVG(salary) FROM employees; -- NULL values are ignored SELECT COUNT(manager_id) FROM employees; -- NULL values are ignored SELECT COUNT(*) FROM employees WHERE manager_id IS NULL; -- Counts only NULL values
عند إجراء عمليات الصلات، يمكن أن تؤدي القيم الخالية إلى نتائج غير متوقعة. على سبيل المثال، INNER JOIN تستبعد الصفوف ذات القيم NULL في شرط الربط، بينما LEFT JOIN تتضمنها.
SELECT e.name, d.department_name FROM employees e LEFT JOIN departments d ON e.department_id = d.id;
يسترجع هذا الاستعلام جميع الموظفين، بما في ذلك أولئك الذين ليس لديهم قسم، بسبب LEFT JOIN.
ترجع الدالة COALESCE أول قيمة غير فارغة في قائمة التعبيرات. من المفيد استبدال NULL بقيمة افتراضية.
SELECT name, COALESCE(manager_id, 'No Manager') AS manager_id FROM employees;
يستبدل هذا الاستعلام قيم NULL manager_id بالسلسلة "لا يوجد مدير".
توفر العديد من لهجات SQL وظائف مثل IFNULL (MySQL) أو ISNULL (SQL Server) للتعامل مع القيم NULL.
-- MySQL SELECT name, IFNULL(manager_id, 'No Manager') AS manager_id FROM employees; -- SQL Server SELECT name, ISNULL(manager_id, 'No Manager') AS manager_id FROM employees;
ترجع الدالة NULLIF القيمة NULL إذا كانت الوسيطتان متساويتين؛ وإلا فإنه يقوم بإرجاع الوسيطة الأولى. وهو مفيد لتجنب القسمة على صفر أخطاء.
SELECT price / NULLIF(quantity, 0) AS unit_price FROM products;
يمنع هذا الاستعلام القسمة على صفر عن طريق إرجاع NULL إذا كانت الكمية صفر.
يتطلب التعامل مع القيم NULL في SQL دراسة متأنية وفهم سلوكها في العمليات المختلفة. باستخدام وظائف SQL المناسبة والالتزام بأفضل الممارسات، يمكنك التأكد من أن استعلامات قاعدة البيانات الخاصة بك تنتج نتائج دقيقة وموثوقة. سواء كنت تقوم بالتحقق من وجود NULL، أو إجراء عمليات تجميع، أو الانضمام إلى الجداول، فإن المعالجة الصحيحة لـ NULL تعد أمرًا بالغ الأهمية للحفاظ على تكامل البيانات وتحقيق النتائج المطلوبة في عمليات SQL الخاصة بك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3