دوال التعامل مع النصوص في SQL


دوال التعامل مع النصوص في SQL

أهلاً يا شباب! كثير بنحتاج نلعب بالنصوص في قواعد البيانات. سواء تعديل، قص، لصق، أو حتى البحث. دوال النصوص في SQL هي أدواتك السحرية هنا. يلا نشوف أهمها:

1. طول النص: LEN() أو LENGTH()

وظيفتها بسيطة: تعطيك عدد حروف النص. تختلف التسمية بين الأنظمة، فـ LEN() في SQL Server و LENGTH() في MySQL و PostgreSQL و Oracle.

مثال:


    SELECT LEN('مرحبا بالعالم'); -- SQL Server
    SELECT LENGTH('مرحبا بالعالم'); -- MySQL, PostgreSQL, Oracle
    -- النتيجة في الحالتين: 12
    

2. تحويل للحروف الكبيرة/الصغيرة: UPPER()/UCASE() و LOWER()/LCASE()

اسمها واضح، تحول كل حروف النص إلى حروف كبيرة (كابيتال) أو صغيرة (سمول). UPPER() و LOWER() هي الأكثر شيوعاً، لكن بعض الأنظمة تدعم UCASE() و LCASE() كمرادفات.

مثال UPPER():


    SELECT UPPER('hello world'); -- النتيجة: HELLO WORLD
    

مثال LOWER():


    SELECT LOWER('HELLO WORLD'); -- النتيجة: hello world
    

ملاحظة: هذه الدوال مفيدة جداً عند مقارنة النصوص بطريقة لا تراعي حالة الأحرف، لو نظامك لا يدعم COLLATE مناسب.

3. استخراج جزء من النص: SUBSTRING() أو SUBSTR()

هذه الدالة تسمح لك بقص جزء معين من النص. تأخذ 3 وسيطات: النص الأصلي، نقطة البداية (عادةً 1 للحرف الأول)، وعدد الحروف المراد استخراجها.

مثال:


    SELECT SUBSTRING('قواعد البيانات', 1, 5); -- النتيجة: قواعد
    SELECT SUBSTRING('قواعد البيانات', 7, 8); -- النتيجة: البيانات
    

تذكر: بعض الأنظمة مثل PostgreSQL تسمح لك بحذف الوسيط الثالث (عدد الحروف) ليعني "إلى نهاية النص".

4. استخراج من اليسار/اليمين: LEFT() و RIGHT()

أسهل من SUBSTRING() لو كنت تحتاج عدد معين من الحروف من بداية النص أو نهايته.

مثال LEFT():


    SELECT LEFT('مرحبا يا عالم', 5); -- النتيجة: مرحبا
    

مثال RIGHT():


    SELECT RIGHT('مرحبا يا عالم', 4); -- النتيجة: عالم
    

5. دمج النصوص: CONCAT()

تستخدم لربط نصين أو أكثر ببعضهما البعض. بسيطة ومفيدة جداً لتكوين سلاسل نصية ديناميكية.

مثال:


    SELECT CONCAT('أهلاً', ' ', 'يا', ' ', 'عالم'); -- النتيجة: أهلاً يا عالم
    SELECT 'أهلاً' + ' ' + 'يا' + ' ' + 'عالم'; -- في SQL Server تستخدم علامة الجمع للدمج أيضاً
    

ملاحظة: في SQL Server، يمكنك استخدام علامة الجمع + لدمج النصوص. أما في MySQL و PostgreSQL و Oracle، فـ CONCAT() هي الدالة القياسية.

6. إزالة المسافات الزائدة: TRIM(), LTRIM(), RTRIM()

هذه الدوال تنظف النصوص من المسافات الزائدة (Space).

  • TRIM(): تزيل المسافات من البداية والنهاية.
  • LTRIM(): تزيل المسافات من البداية (Left Trim).
  • RTRIM(): تزيل المسافات من النهاية (Right Trim).

مثال:


    SELECT TRIM('   نص مع مسافات   '); -- النتيجة: 'نص مع مسافات'
    SELECT LTRIM('   نص مع مسافات');    -- النتيجة: 'نص مع مسافات'
    SELECT RTRIM('نص مع مسافات   ');    -- النتيجة: 'نص مع مسافات'
    

TRIM() في بعض الأنظمة (مثل PostgreSQL و MySQL) يمكنها إزالة حروف محددة غير المسافات، مثلاً TRIM(BOTH 'x' FROM 'xxHello Worldxx').

7. استبدال النصوص: REPLACE()

دالة قوية جداً تستبدل كل مرات ظهور جزء معين من النص بجزء آخر. تأخذ 3 وسيطات: النص الأصلي، النص المراد البحث عنه، والنص الجديد الذي سيحل محله.

مثال:


    SELECT REPLACE('أهلاً يا عالم SQL', 'عالم', 'مبرمجين'); -- النتيجة: أهلاً يا مبرمجين SQL
    

8. البحث عن موقع نص: CHARINDEX() أو INSTR() أو LOCATE()

هذه الدالة تعطيك موضع أول ظهور لنص معين داخل نص آخر.

  • CHARINDEX(): SQL Server
  • INSTR(): Oracle, MySQL (مرادف لـ LOCATE())
  • LOCATE(): MySQL, PostgreSQL (في PostgreSQL تستخدم POSITION())
تأخذ وسيطين (النص المراد البحث عنه، النص الأصلي).

مثال (باستخدام CHARINDEX كنموذج):


    SELECT CHARINDEX('عالم', 'أهلاً يا عالم'); -- النتيجة: 8 (تبدأ العد من 1)
    SELECT CHARINDEX('غير موجود', 'أهلاً يا عالم'); -- النتيجة: 0 (إذا لم يتم العثور عليه)
    

ملاحظة: تختلف نقطة البداية (هل هي 1 أو 0) ومرتبة الوسيطات بين الأنظمة. دائماً راجع وثائق نظامك.

خاتمة

هذه كانت أبرز دوال التعامل مع النصوص في SQL. إتقانها بيوفر عليك وقت وجهد كبير في معالجة البيانات النصية. جربها بنفسك وشوف كيف بتسهل عليك الشغل!