الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مطلوب منى ايجاد Function تقوم بالبحث فى العربية عن حرف الالف ايا كان شكله

Featured Replies

بتاريخ:

انا متدرب جديد اتعلم sql ومطلوب منى ايجاد Function تقوم بالبحث فى العربية عن حرف الالف ايا كان شكله سوأ كان أ او إ او ا او آ

ارجو افادتى اكرمكم الله بوافر العلم

بتاريخ:

يعني ايه يا باشا البحث في العربية ؟ !!

مفيش حاجة اسمها كده ,

انت عاوز تبحث في متغير مثلا ولا في ايتم ولا في ايه بالظبط , يعني ايه الكائن الي عايز تعرف اذا كان فيه الحروف دي ولا لا ؟

لو عندك كائن , استخدم مثلا

IF OBJECT IN (,إ ,أ ,ا) ;
THEN
DO ANY THING
END ;
بتاريخ:
  • كاتب الموضوع

اولا اشكرك جدا على الاهتمام والرد يااستاذ اسلام

ثانيا السؤال كان لو عندى شركة فيها موظفين عايز كل اللى اسمهم احمد مهما كان  شكل حرف الالف فى الاسم ايا كان

بتاريخ:

ممكن الحل العبيط ده مثلا

select name from table where name in (احمد, أحمد,إحمد ,آحمد )

وفي حل تاني بـ function اسمها replace

ابحث عنها علي النت او في الـ documentation

بتاريخ:

للبحث باللغة العربية يمكنك دومًَا جعل البحث أكثر دقة باستخدام الحذف والاستبدال لجعل النص طبيعي 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)
مجمُوعة مستخدمى أوراكل العربيّة  ==> مجموعه مستخدمي اوراكل العربيه 
بتاريخ:

لا مؤاخذة يا معلم انا قصدت translate function  مش replace

مع احترامي للبشمهندس اللي رد , وربنا يجزيه خير طبعا , بس ظني ان الموضوع اسهل من كده بكتير

ويا ريت توضح انت بتبحث في فورم ولا بتبحث فين ؟

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.