Search code examples
oracle-databaseoracle11garabic

how to select number and convert number from English to arabic in oracle


i have table and the data like this english number and i need to select this data but i need it to be like this arabic number how to convert the number from English to arabic


Solution

  • SQL Fiddle

    Oracle 11g R2 Schema Setup:

    CREATE FUNCTION numToEasternArabic(
      in_value IN NUMBER
    ) RETURN NVARCHAR2 DETERMINISTIC
    IS
      p_num  VARCHAR2(100) := TO_CHAR( in_value );
      p_char CHAR(1);
      o_str  NVARCHAR2(100);
    BEGIN
      FOR i IN 1 .. LENGTH( p_num ) LOOP
        p_char := SUBSTR( p_num, i, 1 );
        o_str := o_str
              || CASE p_char
                 WHEN '.'
                 THEN N'.'
                 ELSE UNISTR(
                        '\' || TO_CHAR(
                                 TO_NUMBER( p_char ) + 660,
                                 'FM0000'
                               )
                      )
                 END;
      END LOOP;
      RETURN o_str;
    END;
    /
    

    Query 1:

    SELECT numToEasternArabic( 1438 )
    FROM   DUAL
    

    Results:

    | NUMTOEASTERNARABIC(1438) |
    |--------------------------|
    |                     ١٤٣٨ |