دوال التعامل مع النصوص في 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 ServerINSTR(): Oracle, MySQL (مرادف لـLOCATE())LOCATE(): MySQL, PostgreSQL (في PostgreSQL تستخدمPOSITION())
مثال (باستخدام CHARINDEX كنموذج):
SELECT CHARINDEX('عالم', 'أهلاً يا عالم'); -- النتيجة: 8 (تبدأ العد من 1)
SELECT CHARINDEX('غير موجود', 'أهلاً يا عالم'); -- النتيجة: 0 (إذا لم يتم العثور عليه)
ملاحظة: تختلف نقطة البداية (هل هي 1 أو 0) ومرتبة الوسيطات بين الأنظمة. دائماً راجع وثائق نظامك.
خاتمة
هذه كانت أبرز دوال التعامل مع النصوص في SQL. إتقانها بيوفر عليك وقت وجهد كبير في معالجة البيانات النصية. جربها بنفسك وشوف كيف بتسهل عليك الشغل!