الانتقال إلى المحتوى

البحث عن حرف الألف


Naji_Ali

Recommended Posts

السلام عليكم

لو سمحتوا يا إخوان، ما هي طريقة البحث عن حرف الألف بحيث يتم تجاهل حالة الهمزة؟

مثلا: أحمد إبراهيم، احمد ابراهيم ، أحمد ابراهيم ، احمد إبراهيم ، إحمد أبراهيم

أريد أن يرجع البحث جميع الحالات السابقة

رابط هذا التعليق
شارك

لو سمحت توضح طريقه البحث الي بتسال عنها هل هي على مستوى البلوك او الحقل
بس ممكن تبرمج عمليه البحث ممكن اعطيك مساعده ممكن تفيدك
select chr(450) from dual = آ
select chr(450) from dual = أ

رابط هذا التعليق
شارك

السلام عليكم،

مشكور أخي Ora_Consultant ممكن يكون عندك حقل فيه إسم وتريد البحث عن أي اسم معين فيه حرف الألف في أي مكانـ وتريد إحضار جميع ريكوردز التي فيها اسم يحتوي على حرف ألف بغض النظر عن ادخاله بهمزة أو بدون
ونفس الشيء ينطبق على الياء

ممكن أحيانا تحويل جميع الألف المدخلة إلى ا بدون همزة ثم تخزينها على DB

رابط هذا التعليق
شارك

اخى الكريم :

Naji_Ali

- يمكن استخدام الدالة translate وهى دالة تقوم باستبدال بعض الحروف ببعض كما يلى

- بفرض وجود حقل last_name داخل جدول employees

select last_name from employees where translate(last_Name,'أإة','ااه') = translate ('&v_name','أإة','ااه')



تقوم الجملة السابقة بطلب ادخال الاسم المراد البحث عنه
وبهذه الطريقة ليس مهما طريقة تخزين الاسماء داخل الجدول (أحمد أو احمد) وايضاً ليس مهماً طريقة ادخال المتغيير المراد البحث به v_name&
فيما يلى شرح لهذه الدالة

TRANSLATE(<c1>, <c2> ,<c3>) takes three arguments, where c1, c2, and c3 are character strings. This function returns c1 with all occurrences of
characters in c2 replaced with the positionally corresponding characters in c3. A NULL is returned if any of c1, c2, or c3 is NULL. If c3 has fewer characters
than c2, the unmatched characters in c2 are removed from c1. If c2
has fewer characters than c3, the unmatched characters in c3 are ignored.
SELECT TRANSLATE('fumble','uf','aR') test1
,TRANSLATE(‘When in the course’,’en’,’?~’) test2
,TRANSLATE(‘Mississippi’,’Mis’,’mIS’) test3
FROM dual; TEST1 TEST2 TEST3
------ ------------------ -----------
Ramble Wh?~ i~ th? cours? MISSISSIppI

رابط هذا التعليق
شارك

السلام عليكم

الله يجزيك الخير يا أخي Osama Soliman :wub: على هذا الرد الوافي والكامل

جربتها وهي مزبوطة تماما وتؤدي الغرض المطلوب

أخوك ناجي غانم

رابط هذا التعليق
شارك

ويمكنك اخ ناجى انشاء Function تسهل عملية البحث وذلك كما يلى :

Create or Replace FUNCTION arab_trans (p_str varchar2) RETURN varchar2 
IS
v_str varchar2(400):='';

BEGIN v_str := translate (p_str,'أإة','ااه');
return (v_str);
 
END;



وعند البحث تكتب

select last_name 
from employees where arab_trans (last_name) = arab_trans ('&v_name');

كما تتعامل مع دالة Upper


مع تحياتى
اسامه سليمان
القاهرة

رابط هذا التعليق
شارك

  • بعد 1 سنة...

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية