البرمجة

استخراج الأرقام من النصوص في SQL: استعلام فعّال لتحقيق هذا الهدف

فيما يخص طلبك، يمكنني مساعدتك في إنشاء استعلام SQL يلبي متطلباتك. يبدو أن الهدف هو استخراج الأرقام فقط من القيم في العمود A وترك الصفوف التي لا تحتوي على أي رقم بشكل فارغ.

لتحقيق ذلك، يمكنك استخدام وظائف النصوص والتعبيرات العادية في SQL. الاستعلام التالي يظهر كيف يمكن تنفيذ هذا:

sql
SELECT CASE WHEN REGEXP_CONTAINS(column_a, '\\d') THEN REGEXP_REPLACE(column_a, '[^0-9]', '|') ELSE '' END AS modified_column_a FROM your_table;

في هذا الاستعلام، يتم استخدام REGEXP_CONTAINS لفحص ما إذا كانت القيم في العمود A تحتوي على أي رقم. إذا كانت الإجابة نعم، يتم استخدام REGEXP_REPLACE لاستبدال أي شيء غير رقم برمز الفاصلة العمودية ‘|’.

توفير قيمة فارغة عندما لا تحتوي الصفوف على أي رقم يتم تحقيقه باستخدام التعبير الشرطي CASE.

يرجى استبدال “your_table” بالاسم الصحيح للجدول الذي يحتوي على البيانات الخاصة بك.

هذا الاستعلام يعتمد على استخدام نظام قواعد البيانات الذي يدعم تلك الدوال والتعبيرات.

المزيد من المعلومات

في هذا الاستعلام، تم استخدام وظائف REGEXP_CONTAINS وREGEXP_REPLACE التي تتيحها اللغة البرمجية SQL. دعني أوضح بعض المزيد من التفاصيل حول الاستعلام:

  1. REGEXP_CONTAINS(column_a, '\\d'): تقوم هذه الوظيفة بفحص ما إذا كانت القيم في العمود A تحتوي على أي رقم أو لا. تستخدم “\d” للتعبير عن أي رقم.

  2. REGEXP_REPLACE(column_a, '[^0-9]', '|'): إذا كان العمود يحتوي على أي رقم، يقوم هذا الجزء من الاستعلام باستخدام REGEXP_REPLACE لاستبدال أي شيء غير رقم برمز الفاصلة العمودية ‘|’. هنا يتم استخدام ‘[^0-9]’ لتعبير عن أي شيء غير رقم.

  3. CASE: يتم استخدام التعبير الشرطي CASE لإعادة قيمة فارغة إذا لم تحتوي القيمة على أي رقم.

باختصار، يقوم هذا الاستعلام بتحويل قيم العمود A إلى سلسلة جديدة حيث يتم فصل الأرقام باستخدام رمز الفاصلة العمودية ‘|’. إذا لم يكن هناك أي رقم في القيمة، يتم ترك الخلية فارغة. يمكن تكامل هذا الاستعلام بسهولة في إجراءات مخزنة أو تضمينه في التطبيق البرمجي الخاص بك.

زر الذهاب إلى الأعلى