• 0
#A-H.c

ممكن كود تعديل ارقام الهواتف بال SQL

سؤال

السلام عليكم ورحمة الله وبركاته

ممكن كود تعديل ارقام الهواتف بال SQL

 

يوجد قاعدة بيانات  سيكوال يوجد بها ارقام هواتف أرضي وارقام هواتف محمولة قديمة ( 10 أرقام ) ويوجد ارقام هواتف محمولة جديدة ( 11 رقم )

 

اسماء الحقول : Phone , Name , Address

 

 

المطلوب تحديد الارقام اللتي تكون مكونة من 10 أرقام وتعديلها على النحو التالي اذا كانت 10 ارقام وتبدأ بـ ( 0101234567 ) يتم تحويلها الى ( 01001234567 ) ، والارقام اللتي تبدأ بـ ( 0121234567 ) يتم تحويلها الى ( 01221234567 )

 

وفي النهاية اذا كان يوجد ارقام مكررة يتم ابقاء واحد منها ومسح الرقم المكرر

 

وأأسف على الاطالة وجزاكم الله كل خير.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 1

السلام عليكم ورحمة الله وبركاته

أولاً: شكر خاص للأستاذ المبدع محمد تركى وأستاذنا حسام على مجهودهما العظيم فى هذا المنتدى، جعل الله أعمالهما فى ميزان حسناتهما

ثانياً: لو سمح لى أستاذنا محمد تركى بتعديل بسيط على الكود الرائع الذى تفضل به

التعديل مجرد استبدال أمر Replace بأمر Substring حيث أننى واجهتنى مشكلة عند استخدام أمر replace أنه سيقوم بتغيير كل 010 إلى 0100 بمعنى لو أن رقم التليفون 0105501055 فبعد التغيير سيكون 010055010055 اى أنه قام بتغيير 010 الموجودة داخل الرقم وهذا غير مطلوب

 

فربما يكون الكود كالتالى بالنسبة للأرقام البادئة بـ 010،

update Tbl_Phones set  Phone = '0100' + Substring(phone, 4, 20) where  Phone = LEFT(phone,10) and phone Like '010%'

اى يعدل الرقم بالقيمة الجديدة والتى عبارة عن المقطع '0100' + باقى الرقم ابتداء من الخانة الرابعة وحتى نهايته لاحظ أننا وضعنا الطول يساوى 20 وهذا يفى بالغرض

 

ويتم عمل نفس الكود السابق مع كل التوليفات أى البادئة بـ 012، 011، 014، 019، 016 وهكذا

 

علمنا الله وإياكم ونفعنا بما علمنا

تم تعديل بواسطه ema2000_t
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي الفاضل

بالنسبة للمطلوب الاول تفضل الحل

فمن خلال هذا الاسكريبت سيتم عمل تحديث للارقام التي تبدأ بــ 010 و مكونة من 10 أرقام فقط ليصبح 0100 بدلا من 010

update Tbl_Phones set  Phone = Replace(phone,010,0100)where  Phone = LEFT(phone,10) and phone Like '010%'

ستقوم بتنفيذ الاسكريبت علي 012 ايضا

 

بعد الانتهاء من عمليه التحديث سيتم حذف الارقام المكررة من الجدول

 

WITH CTE AS(   SELECT phone,       RN = ROW_NUMBER()OVER(PARTITION BY phone ORDER BY phone)   FROM dbo.Tbl_Phones)DELETE FROM CTE WHERE RN > 1

بالتوفيق

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وايضا قد يفيدك هذا الكود

update Tbl_Phones set  Phone = '01'+ SUBSTRING(phone,3,10)where LEN(Phone)=10

وايضا هذا للحذف

WITH CTE AS(   SELECT id,       RN = ROW_NUMBER()OVER(PARTITION BY phone ORDER BY phone)   FROM dbo.Tbl_Phones)DELETE FROM Tbl_Phones WHERE ID IN(SELECT id FROM CTE WHERE rn > 1)
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكراً لكم جميعاً وجزاكم الله الجنة

:thumb_up:  :thumb_up:  :thumb_up:  :ty:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .