the past بتاريخ: 11 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 11 مايو 2010 السلام عليكم ورحمة الله وبركاتهانا عندي جدول فيه عمود اسمه name ادخل فيه الاسم عادي مثلا (محمد احمد محمد علي)المشكلة انه في التقرير الاسم مقسم بمعنى الاسم الاول : اسم الاب: اسم الجد: اللقبكيف اقدر اطلع الاسم بهذه الطريقة في التقرير مع العلم انه عندي داتا كثير جدا وما اقدر امسح ارجووووووووو المساعدة جزاكم الله خير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 11 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 11 مايو 2010 السلام عليكمهي ممكن بإنك تتحسس المسافات بين الكلمات باستخدام مثلا substr ولكن ممكن يقابلنا مشكلة فرضا هناك اسم مثلا زي عبدالله هل ستكتب كده أم عبد الله يعني الاسماء ذات أكثر من كلمة بسيطة ان شاء الله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
the past بتاريخ: 11 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 11 مايو 2010 ارجووووو المساعدة وخصوصا ان عندي بيانات كثيرة جدا في هذا الجدول ولا اريد ان اعدل في الاعمدة فيؤدي ذلك الى ضياع البيانات اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abdou1984 بتاريخ: 12 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 12 مايو 2010 السلام عليكم ورحمة الله وبركاتهاخى ممكن تشوف الحل ده ان شاء الله يساعدك فى مشكلتك .مثال كامل للتجربة . CREATE TABLE TMP(NAME VARCHAR2(200)); INSERT INTO TMP VALUES ('على محمود أحمد بكر'); INSERT INTO TMP VALUES ('محمد احمد محمد علي'); COMMIT; SELECT SUBSTR(NAME,1,INSTR(NAME,' ',1,1)-1 ) FIRST_NAME , SUBSTR(NAME,INSTR(NAME,' ',1,1)+1, INSTR(NAME,' ',1,2)-INSTR(NAME,' ',1,1) ) SECOND_NAME , SUBSTR(NAME,INSTR(NAME,' ',1,2)+1 , INSTR(NAME,' ',1,3)-INSTR(NAME,' ',1,2) ) THIRD_NAME , SUBSTR(NAME,INSTR(NAME,' ',1,3)+1 ) LAST_NAME FROM TMP; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
the past بتاريخ: 12 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 12 مايو 2010 شكرا يا اخي بس اذا كان الاسم ( عبدالرحمن محمد عبدالله ) هل ستكون نفس النتيجة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
the past بتاريخ: 12 مايو 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 12 مايو 2010 ياشباب ارجووو المساعدةشكرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
jadquraan بتاريخ: 12 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 12 مايو 2010 السلام عليكم الحل اللي كتبه abdou1984 هو الملاذ الوحيد لكن تبقى مشكله الاسماء المركبه و لتقليل حدوث هذه المشكله يجب ضبط البيانات قبل تنفيذ عملية التقسيم ويتم ذلك بإستبعاد كل شيء قد يؤدي الى احداث ضرر مثل عمل ريبلاس للمسافة في حال تكراراها الى مسافه واحد وعمد ريبليس لمعضم الاسماء المركبه اللتي ستخطر على بالك الى اسم مركب دون مسافات كالتالي نفرض ان الجدول اسمه aوحقل الاسم اسمه nيبدىء مشوارك الآن update a set n=replace(n,' ',' '); update a set n=replace(n,' ',' '); update a set n=replace(n,'عبد الله','عبدالله'); update a set n=replace(n,'عبد الرحمن','عبدالرحمن'); update a set n=replace(n,'عبد الكريم','عبدالكريم'); update a set n=replace(n,'عبد الصمد','عبدالصمد'); قد تطول هذه العملية ولكن ستحصل في النهاية على بيانات يمكن تقسيمها بالإعتماد على الفراغ ان صح التعبير وستقلل بهذه الطريقة نسبة الخطأ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Mr_CoBoL بتاريخ: 13 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 13 مايو 2010 السلام عليكم ورحمة الله وبركاتهراجع الملف المرفقCHKNAM.rar اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ENG_HOSSAM_WALLY بتاريخ: 15 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 15 مايو 2010 السلام عليكمالاخ / Mr_CoBoLلقد جربت الملف وهو يعمل بشكل جيد جدا بارك الله فيك وجعله الله فى ميزان حسناتك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mageed_ahmed بتاريخ: 15 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 15 مايو 2010 حل رائع هكذا هم الرجال المعطائةأكثر الله من امثالك أخي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Ahmad.Hasan بتاريخ: 15 مايو 2010 تقديم بلاغ مشاركة بتاريخ: 15 مايو 2010 جزاكم الله كل خير...والى الأمام... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
shar120032002 بتاريخ: 9 يونيو 2010 تقديم بلاغ مشاركة بتاريخ: 9 يونيو 2010 على الرحب وأرجوا من الله التوفيقنرفق لك التالي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
love_ora بتاريخ: 9 يونيو 2010 تقديم بلاغ مشاركة بتاريخ: 9 يونيو 2010 الافضل انك كنت تقسم الجدول عند مابنيته وماتخليش الاسم كامل في حقل واحد ايالاسم الاول حقل لحاله الاسم الاوسط حقلاللقب حقلبالتوفيق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Sabeer بتاريخ: 15 يوليو 2010 تقديم بلاغ مشاركة بتاريخ: 15 يوليو 2010 السلام عليكمالاخ / Mr_CoBoLلقد جربت الملف وهو يعمل بشكل جيد جدا بارك الله فيك وجعله الله فى ميزان حسناتك السلام عليكم ورحمة الله وبركاتةاخي ENG_HOSSAM_WALLY حل الاخ Mr_CoBoL جدا رائع لكن لو ادخلنا الاسم عبد الله,او عبد العزيز .........الخ سيظهر عبدكاسم والله كاسم تانيهنا ستواجهنا مشكلةنلاحظ انو الاسماء المركبة دائما تاتي بعد الاسم عبداذا ممكن نعدل الدالة عليها السطر هذا:BLOCK3.NAM :=replace (:BLOCK3.NAM,'عبد ','عبد');وتقبل تحاياي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
الكونت بتاريخ: 22 يوليو 2010 تقديم بلاغ مشاركة بتاريخ: 22 يوليو 2010 يمكنك عد المقاطع الناتجة من substr واذا كانت اكثر من 4 ادمج اول 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ahmed sobhy بتاريخ: 28 سبتمبر 2010 تقديم بلاغ مشاركة بتاريخ: 28 سبتمبر 2010 SELECT SUBSTR ('Ahmed Sobhy Ahmed', 1, 5) first_name, SUBSTR ('Ahmed Sobhy Ahmed', 7, 5) second_name, SUBSTR ('Ahmed Sobhy Ahmed', 13, 5) last_name FROM DUAL اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 15 أكتوبر 2010 تقديم بلاغ مشاركة بتاريخ: 15 أكتوبر 2010 فكرة رائعة وممتازة ، ولكن لدي تحفظ أتمني الإستماع إليها جيداً دون زعل !!!الإسم المركب (عبد الله - عبد السلام - عبد الحميد - عبد الرزاق - ...................... الي آخرة) ، ليس فقط هو الوحيد الإسم المركب !!!لديك مثلاً شخص أعرفة جيداً سمي إسم إبنته الي (وحدة وادي النيل) ، وأبوها (محمد) ، وجدها (عبد الله) ........ تخيل ثلاثة أسماء في إسم واحد وفية ناس تانية بتحب تسمي أسماء أولادها بأسماء الزعماء ، زي مثلاً (جمال عبد الناصر - الناصر صلاح الدين - أنور السادات - صدام حسين - ............ الي آخرة) فـ (جمال عبد الناصر) ، و (الناصر صلاح الدين) ، ثلاثة أسماء في إسم واحد !!!!ههههههههههههههههه ، وفية واحد مسمي إبنه أبو فرو ، أو أبو خاروف ، هههههههههههههههههههههههههههههطيب ما الحل في مثل هذه المشكلة !!!!إذاً لا يصح إلا الصحيح !!!!تحليل نظم قواعد البيانات بتقول أن إسم الإنسان يكون حقل مركب (الإسم - إسم الأب - إسم الجد - إسم العائلة أو اللقب) ، وكل حقل له حجم مناسبإذاً فالحل المدرج حل مؤقت لحين تحويل النماذج والتقارير الخاصة بك أخ the past ... فالتعالج مشكلتك من جزورها حتي لا يظهر لك أي مشاكل أخري مستقبلاًأما بخصوص فكرتك أخ Mr_CoBoL ، فهي فعلاً أكثر من رائعة وقد أستفدت منها كثييييييييييييييييييييييييييير جداً ، وجزاك الله كل خير .... والله أستفدت منها بالتوفيق للجميع وجزاكم الله خير الجزاءالسلام عليكم ورحمة الله وبركاتة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
w2a بتاريخ: 17 أكتوبر 2010 تقديم بلاغ مشاركة بتاريخ: 17 أكتوبر 2010 أخي الكريم Mr_CoBoLممكن شرح للكود وكيفية تطبيقه على جدول به 1500 موظف اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Mr_CoBoL بتاريخ: 17 أكتوبر 2010 تقديم بلاغ مشاركة بتاريخ: 17 أكتوبر 2010 أخي الكريم Mr_CoBoLممكن شرح للكود وكيفية تطبيقه على جدول به 1500 موظف في الجزء الأول من الكود نقوم بعمل فلترة للأسم المراد تجزئته وذلك بإزالة المسافات الزائدة وتغيير حالة بعض الحروف مثل "أ" إلى "ا" ..في الجزء الثاني من الكود وهو ... begin e_x := 1 ; ss := 1; For ss IN 1..LENGTH(:BLOCK3.nam) LOOP L := substr(:BLOCK3.nam, ss, 1); if e_x = 1 then w1 := w1 || L; end if; if L = ' ' then e_x := e_x + 1; end if; if e_x = 2 then w2 := w2 || l; end if; if e_x = 3 then w3 := w3 || l; end if; if e_x = 4 then w4 := w4 || l; end if; if e_x = 5 then w5 := w5 || l; end if; if e_x = 6 then w6 := w6 || l; end if; if e_x = 7 then w7 := w7 || l; end if; end loop; توجد متغيرات عملها كالتالي ...ex هو المتغير المسئول عن عدد تقسيمات الاسم الكامل ... مثلا تريد تقسيم الاسم الى 4 او 5 تقسيمات في هذا المثال يمكن تقسيم الى 7 تقسيمات ss يقوم بقراءة طوال الحقل المراد تقسيمه ll يقوم بقراءة الحقل المراد تقيسمه حرف بـ حرف ثم يأتي دور نقل كل حرف من الحروف إلى ترتيبه حسب التقسيم أعلاه ...يمكنك تطبيقه على أي جدول وأي عدد من الاسماء فقط قم بتغيير ما يلزم في الكودأخي MMA وباقي الأخوة الاعزاء ...ملحوظاتكم في مكانها الصحيح بالفعل توجد اسماء مركبة ولا يصلح لها الكود الموضح أعلاه لكنني أردت وضع تصوري ربما يساعد أخونا صاحب المشكلة تحياتياخوكم حسن الحسيني اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد سعيد بتاريخ: 17 أكتوبر 2010 تقديم بلاغ مشاركة بتاريخ: 17 أكتوبر 2010 -- الجدول الذى سيتم العمل عليه create table emp_full_names (id number (6), full_name varchar2(100), first_name varchar2(25), second_name varchar2(25), third_name varchar2(25), fourth_name varchar2(25)); -- ازالة المسافات من يسار الاسم الكامل update emp_full_names set full_name = ltrim(full_name); -- ازالة المسافات من يمين الاسم الكامل update emp_full_names set full_name = rtrim(full_name); -- ازالة المسافات المتجاروة من الاسم الكامل -- يتم التكرار حتى خمس مرات لضمان ازالة المسافات المتجاروة حتى لو كان 8 مسافات begin for i in 1..7 loop update emp_full_names set full_name = replace (full_name,' ',' '); end loop; end; / create or replace procedure separate_names is v_position_1 number (3) :=0; v_position_2 number (3) :=0; v_position_3 number (3) :=0; CURSOR emp_names_cursor IS SELECT * from emp_full_names FOR UPDATE; BEGIN FOR emp_record IN emp_names_cursor LOOP v_position_1 := instr(emp_record.full_name,' ',1,1);-- مكان أول مسافة v_position_2 := instr(emp_record.full_name,' ',1,2);-- مكان ثانى مسافة v_position_3 := instr(emp_record.full_name,' ',1,3);-- مكان ثالث مسافة UPDATE emp_full_names SET first_name = substr(full_name,1,v_position_1), second_name = substr(full_name,v_position_1+1,v_position_2-v_position_1-1), third_name = substr(full_name,v_position_2+1,v_position_3-v_position_2-1), fourth_name = substr(full_name,v_position_3+1) WHERE CURRENT OF emp_names_cursor; END LOOP; END; / اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 22 أكتوبر 2010 تقديم بلاغ مشاركة بتاريخ: 22 أكتوبر 2010 أخي MMA وباقي الأخوة الاعزاء ...ملحوظاتكم في مكانها الصحيح بالفعل توجد اسماء مركبة ولا يصلح لها الكود الموضح أعلاه لكنني أردت وضع تصوري ربما يساعد أخونا صاحب المشكلة شكراً أخي الكريم علي سعة الصدرولكن إسمح لي إضافتاً لفكرتك الأكثر من الرائعة أن أترك فكرتي الخاصة لعل وعسي أن تفيد بعض الشيء !!!فما رأيك لو جعلنا الوضع أكثر ديناميكية !!!أنظر المثال المرفقوبالتوفيق للجميعSQL.zip اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 22 أكتوبر 2010 تقديم بلاغ مشاركة بتاريخ: 22 أكتوبر 2010 وهذه طريقة أخري لنفس الفكرةبالإضافة الي إستخدام الفكرة داخل PL/SQL كي يتم التعديل علي جدول محددحيث يعتمد كلياً علي Table فقط لا غير دون Object وهو الأسهلشكراً لكموبالتوفيق للجميع SQL.zip اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ramy_orcl بتاريخ: 6 فبراير 2011 تقديم بلاغ مشاركة بتاريخ: 6 فبراير 2011 مشكور اخى فى الله على الامثلة القيمة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
scince بتاريخ: 18 مايو 2011 تقديم بلاغ مشاركة بتاريخ: 18 مايو 2011 جزاكم الله خير الجزاء اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
osama80 بتاريخ: 15 مارس 2012 تقديم بلاغ مشاركة بتاريخ: 15 مارس 2012 مشكور كل من ساهم في هذه المشاركة بجد هذه مشكلة الكل يواجهها في بيانات الاسماء الرباعية تحديدا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.