بتاريخ: 11 مايو 201015 سنة comment_191704 السلام عليكم ورحمة الله وبركاتهانا عندي جدول فيه عمود اسمه name ادخل فيه الاسم عادي مثلا (محمد احمد محمد علي)المشكلة انه في التقرير الاسم مقسم بمعنى الاسم الاول : اسم الاب: اسم الجد: اللقبكيف اقدر اطلع الاسم بهذه الطريقة في التقرير مع العلم انه عندي داتا كثير جدا وما اقدر امسح ارجووووووووو المساعدة جزاكم الله خير تقديم بلاغ
بتاريخ: 11 مايو 201015 سنة comment_191712 السلام عليكمهي ممكن بإنك تتحسس المسافات بين الكلمات باستخدام مثلا substr ولكن ممكن يقابلنا مشكلة فرضا هناك اسم مثلا زي عبدالله هل ستكتب كده أم عبد الله يعني الاسماء ذات أكثر من كلمة بسيطة ان شاء الله تقديم بلاغ
بتاريخ: 11 مايو 201015 سنة كاتب الموضوع comment_191714 ارجووووو المساعدة وخصوصا ان عندي بيانات كثيرة جدا في هذا الجدول ولا اريد ان اعدل في الاعمدة فيؤدي ذلك الى ضياع البيانات تقديم بلاغ
بتاريخ: 12 مايو 201015 سنة comment_191719 السلام عليكم ورحمة الله وبركاتهاخى ممكن تشوف الحل ده ان شاء الله يساعدك فى مشكلتك .مثال كامل للتجربة . 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; تقديم بلاغ
بتاريخ: 12 مايو 201015 سنة كاتب الموضوع comment_191734 شكرا يا اخي بس اذا كان الاسم ( عبدالرحمن محمد عبدالله ) هل ستكون نفس النتيجة تقديم بلاغ
بتاريخ: 12 مايو 201015 سنة comment_191765 السلام عليكم الحل اللي كتبه 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,'عبد الصمد','عبدالصمد'); قد تطول هذه العملية ولكن ستحصل في النهاية على بيانات يمكن تقسيمها بالإعتماد على الفراغ ان صح التعبير وستقلل بهذه الطريقة نسبة الخطأ تقديم بلاغ
بتاريخ: 13 مايو 201015 سنة comment_191772 السلام عليكم ورحمة الله وبركاتهراجع الملف المرفقCHKNAM.rar تقديم بلاغ
بتاريخ: 15 مايو 201015 سنة comment_191899 السلام عليكمالاخ / Mr_CoBoLلقد جربت الملف وهو يعمل بشكل جيد جدا بارك الله فيك وجعله الله فى ميزان حسناتك تقديم بلاغ
بتاريخ: 15 مايو 201015 سنة comment_191913 حل رائع هكذا هم الرجال المعطائةأكثر الله من امثالك أخي تقديم بلاغ
بتاريخ: 9 يونيو 201015 سنة comment_194255 الافضل انك كنت تقسم الجدول عند مابنيته وماتخليش الاسم كامل في حقل واحد ايالاسم الاول حقل لحاله الاسم الاوسط حقلاللقب حقلبالتوفيق تقديم بلاغ
بتاريخ: 15 يوليو 201015 سنة comment_196693 السلام عليكمالاخ / Mr_CoBoLلقد جربت الملف وهو يعمل بشكل جيد جدا بارك الله فيك وجعله الله فى ميزان حسناتك السلام عليكم ورحمة الله وبركاتةاخي ENG_HOSSAM_WALLY حل الاخ Mr_CoBoL جدا رائع لكن لو ادخلنا الاسم عبد الله,او عبد العزيز .........الخ سيظهر عبدكاسم والله كاسم تانيهنا ستواجهنا مشكلةنلاحظ انو الاسماء المركبة دائما تاتي بعد الاسم عبداذا ممكن نعدل الدالة عليها السطر هذا:BLOCK3.NAM :=replace (:BLOCK3.NAM,'عبد ','عبد');وتقبل تحاياي تقديم بلاغ
بتاريخ: 22 يوليو 201015 سنة comment_197208 يمكنك عد المقاطع الناتجة من substr واذا كانت اكثر من 4 ادمج اول 2 تقديم بلاغ
بتاريخ: 28 سبتمبر 201015 سنة comment_200682 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 تقديم بلاغ
بتاريخ: 15 أكتوبر 201015 سنة comment_201500 فكرة رائعة وممتازة ، ولكن لدي تحفظ أتمني الإستماع إليها جيداً دون زعل !!!الإسم المركب (عبد الله - عبد السلام - عبد الحميد - عبد الرزاق - ...................... الي آخرة) ، ليس فقط هو الوحيد الإسم المركب !!!لديك مثلاً شخص أعرفة جيداً سمي إسم إبنته الي (وحدة وادي النيل) ، وأبوها (محمد) ، وجدها (عبد الله) ........ تخيل ثلاثة أسماء في إسم واحد وفية ناس تانية بتحب تسمي أسماء أولادها بأسماء الزعماء ، زي مثلاً (جمال عبد الناصر - الناصر صلاح الدين - أنور السادات - صدام حسين - ............ الي آخرة) فـ (جمال عبد الناصر) ، و (الناصر صلاح الدين) ، ثلاثة أسماء في إسم واحد !!!!ههههههههههههههههه ، وفية واحد مسمي إبنه أبو فرو ، أو أبو خاروف ، هههههههههههههههههههههههههههههطيب ما الحل في مثل هذه المشكلة !!!!إذاً لا يصح إلا الصحيح !!!!تحليل نظم قواعد البيانات بتقول أن إسم الإنسان يكون حقل مركب (الإسم - إسم الأب - إسم الجد - إسم العائلة أو اللقب) ، وكل حقل له حجم مناسبإذاً فالحل المدرج حل مؤقت لحين تحويل النماذج والتقارير الخاصة بك أخ the past ... فالتعالج مشكلتك من جزورها حتي لا يظهر لك أي مشاكل أخري مستقبلاًأما بخصوص فكرتك أخ Mr_CoBoL ، فهي فعلاً أكثر من رائعة وقد أستفدت منها كثييييييييييييييييييييييييييير جداً ، وجزاك الله كل خير .... والله أستفدت منها بالتوفيق للجميع وجزاكم الله خير الجزاءالسلام عليكم ورحمة الله وبركاتة تقديم بلاغ
بتاريخ: 17 أكتوبر 201015 سنة comment_201599 أخي الكريم Mr_CoBoLممكن شرح للكود وكيفية تطبيقه على جدول به 1500 موظف تقديم بلاغ
بتاريخ: 17 أكتوبر 201015 سنة comment_201605 أخي الكريم 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 أكتوبر 201015 سنة comment_201608 -- الجدول الذى سيتم العمل عليه 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; / تقديم بلاغ
بتاريخ: 22 أكتوبر 201015 سنة comment_201959 أخي MMA وباقي الأخوة الاعزاء ...ملحوظاتكم في مكانها الصحيح بالفعل توجد اسماء مركبة ولا يصلح لها الكود الموضح أعلاه لكنني أردت وضع تصوري ربما يساعد أخونا صاحب المشكلة شكراً أخي الكريم علي سعة الصدرولكن إسمح لي إضافتاً لفكرتك الأكثر من الرائعة أن أترك فكرتي الخاصة لعل وعسي أن تفيد بعض الشيء !!!فما رأيك لو جعلنا الوضع أكثر ديناميكية !!!أنظر المثال المرفقوبالتوفيق للجميعSQL.zip تقديم بلاغ
بتاريخ: 22 أكتوبر 201015 سنة comment_201961 وهذه طريقة أخري لنفس الفكرةبالإضافة الي إستخدام الفكرة داخل PL/SQL كي يتم التعديل علي جدول محددحيث يعتمد كلياً علي Table فقط لا غير دون Object وهو الأسهلشكراً لكموبالتوفيق للجميع SQL.zip تقديم بلاغ
بتاريخ: 15 مارس 201213 سنة comment_221895 مشكور كل من ساهم في هذه المشاركة بجد هذه مشكلة الكل يواجهها في بيانات الاسماء الرباعية تحديدا تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.