بتاريخ: 14 يونيو 201411 سنة comment_251937 انا متدرب جديد اتعلم sql ومطلوب منى ايجاد Function تقوم بالبحث فى العربية عن حرف الالف ايا كان شكله سوأ كان أ او إ او ا او آ ارجو افادتى اكرمكم الله بوافر العلم تقديم بلاغ
بتاريخ: 14 يونيو 201411 سنة comment_251949 يعني ايه يا باشا البحث في العربية ؟ !! مفيش حاجة اسمها كده , انت عاوز تبحث في متغير مثلا ولا في ايتم ولا في ايه بالظبط , يعني ايه الكائن الي عايز تعرف اذا كان فيه الحروف دي ولا لا ؟ لو عندك كائن , استخدم مثلا IF OBJECT IN (,إ ,أ ,ا) ; THEN DO ANY THING END ; تقديم بلاغ
بتاريخ: 14 يونيو 201411 سنة كاتب الموضوع comment_251955 اولا اشكرك جدا على الاهتمام والرد يااستاذ اسلام ثانيا السؤال كان لو عندى شركة فيها موظفين عايز كل اللى اسمهم احمد مهما كان شكل حرف الالف فى الاسم ايا كان تقديم بلاغ
بتاريخ: 16 يونيو 201411 سنة comment_252074 ممكن الحل العبيط ده مثلا select name from table where name in (احمد, أحمد,إحمد ,آحمد ) وفي حل تاني بـ function اسمها replace ابحث عنها علي النت او في الـ documentation تقديم بلاغ
بتاريخ: 22 يونيو 201411 سنة comment_252264 للبحث باللغة العربية يمكنك دومًَا جعل البحث أكثر دقة باستخدام الحذف والاستبدال لجعل النص طبيعي text normalization .. وعند البحث يمكنك تحويل كلمات البحث لأصلها الطبيعي وكذلك كلمات النص المراد البحث فيه ثم استخدام المتغيرات الجديدة للبحث CREATE TYPE t_text IS TABLE OF VARCHAR2( 256 ); CREATE OR REPLACE PACKAGE ARABIC_TEXT_UTIL AS FUNCTION NormalizeArabicText( P_TEXT IN VARCHAR2 ) RETURN VARCHAR2; END ARABIC_TEXT_UTIL; CREATE OR REPLACE PACKAGE BODY ARABIC_TEXT_UTIL AS ALEF CONSTANT VARCHAR2( 1 CHAR ) := 'ا'; ALEF_MADDA CONSTANT VARCHAR2( 1 CHAR ) := 'آ'; ALEF_HAMZA_ABOVE CONSTANT VARCHAR2( 1 CHAR ) := 'أ'; ALEF_HAMZA_BELOW CONSTANT VARCHAR2( 1 CHAR ) := 'إ'; YEH CONSTANT VARCHAR2( 1 CHAR ) := 'ي'; DOTLESS_YEH CONSTANT VARCHAR2( 1 CHAR ) := 'ى'; HAMZA CONSTANT VARCHAR2( 1 CHAR ) := 'ء'; HAMZA_ON_YEH CONSTANT VARCHAR2( 1 CHAR ) := 'ئ'; HAMZA_ON_WAW CONSTANT VARCHAR2( 1 CHAR ) := 'ؤ'; TEH_MARBUTA CONSTANT VARCHAR2( 1 CHAR ) := 'ة'; HEH CONSTANT VARCHAR2( 1 CHAR ) := 'ه'; TATWEEL CONSTANT VARCHAR2( 1 CHAR ) := 'ـ'; FATHATAN CONSTANT VARCHAR2( 1 CHAR ) := 'ً'; DAMMATAN CONSTANT VARCHAR2( 1 CHAR ) := 'ٌ'; KASRATAN CONSTANT VARCHAR2( 1 CHAR ) := 'ٍ'; FATHA CONSTANT VARCHAR2( 1 CHAR ) := 'َ'; DAMMA CONSTANT VARCHAR2( 1 CHAR ) := 'ُ'; KASRA CONSTANT VARCHAR2( 1 CHAR ) := 'ِ'; SHADDA CONSTANT VARCHAR2( 1 CHAR ) := 'ّ'; SUKUN CONSTANT VARCHAR2( 1 CHAR ) := 'ْ'; FUNCTION multiple_replace( in_text IN VARCHAR2 , in_old IN t_text , in_new IN t_text ) RETURN VARCHAR2 AS v_result VARCHAR2( 32767 ); BEGIN IF ( in_old.COUNT <> in_new.COUNT ) THEN RETURN in_text; END IF; v_result := in_text; FOR i IN 1 .. in_old.COUNT LOOP v_result := REPLACE( v_result , in_old( i ) , in_new( i ) ); END LOOP; RETURN v_result; END; FUNCTION NormalizeArabicText( P_TEXT IN VARCHAR2 ) RETURN VARCHAR2 IS cRetVal VARCHAR2( 32000 CHAR ) := P_TEXT; BEGIN cRetVal := P_TEXT; --alef cRetVal := multiple_replace( cRetVal , NEW t_text( ALEF_MADDA , ALEF_HAMZA_ABOVE , ALEF_HAMZA_BELOW ) , NEW t_text( ALEF , ALEF , ALEF ) ); --yeh cRetVal := REPLACE( cRetVal , DOTLESS_YEH , YEH ); --hamza cRetVal := multiple_replace( cRetVal , NEW t_text( HAMZA_ON_YEH, HAMZA_ON_WAW ) , NEW t_text( HAMZA, HAMZA ) ); --teh marbuta cRetVal := REPLACE( cRetVal , TEH_MARBUTA , HEH ); --tashkeel & tatweel cRetVal := multiple_replace( cRetVal , NEW t_text( TATWEEL , FATHATAN , DAMMATAN , KASRATAN , FATHA , DAMMA , KASRA , SHADDA , SUKUN ) , NEW t_text( NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL ) ); RETURN cRetVal; END; END ARABIC_TEXT_UTIL; SELECT T_NAME , ARABIC_TEXT_UTIL.NORMALIZEARABICTEXT( T_NAME ) T_NAME_NORM FROM (SELECT 'مجمُوعة مستخدمى أوراكل العربيّة ' AS T_NAME FROM DUAL) مجمُوعة مستخدمى أوراكل العربيّة ==> مجموعه مستخدمي اوراكل العربيه تقديم بلاغ
بتاريخ: 23 يونيو 201411 سنة comment_252318 لا مؤاخذة يا معلم انا قصدت translate function مش replace مع احترامي للبشمهندس اللي رد , وربنا يجزيه خير طبعا , بس ظني ان الموضوع اسهل من كده بكتير ويا ريت توضح انت بتبحث في فورم ولا بتبحث فين ؟ تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.