2015-12-29 3 views
0

Я пытаюсь преобразовать большую сумму доллара в слова через oracle SQL для каждой отдельной цифры. Например: $ 555,555,555.55 = "доллар пять пять пять запятой пять пять пять запятой пять пять пять пять пять пять секунд".SQL конвертировать сумму в слово для каждой цифры (включая доллар, десятичную и запятую)

Я попробовал версию перевода чисел Julian Date в Julian Date, но она подходит только к десятитысячному месту, не больше.

Пожалуйста, помогите.

+0

Похоже, работу для целую кучу 'REPLACE'. –

+0

Хотя не совсем то, что вы после того, как я нашел [это] (http://viralpatel.net/blogs/convert-number-into-words-oracle-sql-query/) интересный 'select to_char (to_date (28385, ' j '),' jsp ') 'он работает только с целыми числами (без десятичных знаков) и не обрабатывает валюту или запятую. заменить, кажется, лучший ответ до сих пор. – xQbert

+0

Этот метод - это дата Джулиана, о которой я упоминал. Он не работает с числами, сколько мне нужно. Но спасибо. – user3404204

ответ

1

Вы можете использовать вложенные замены:

select replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(col, '$', 'dollar ' 
                            ), ',', 'comma ' 
                          ), '0', 'zero ' 
. . .                                  
+0

Какой, для производства, я бы рекомендовал сделать функцию для удобства чтения. –

+0

Спасибо, я попробую. – user3404204

1

Results Image Хорошо я, возможно, мой синтаксис неправильно, но он вынужден нечетный столбец в моих результатах здесь мой код:

SELECT SUM (amount) AS amount, 
    REPLACE (
     REPLACE (
     REPLACE (
      REPLACE (
       REPLACE (
        REPLACE (
        REPLACE (
         REPLACE (
          REPLACE (
           REPLACE (
           REPLACE (
            REPLACE (SUM (amount), 
              '$', 
              'dollar '), 
            ',', 
            'comma '), 
           '.', 
           'period '), 
           '0', 
           'zero '), 
          '1', 
          'one '), 
         '2', 
         'two '), 
        '3', 
        'three '), 
        '4', 
        'four '), 
       '5', 
       'five '), 
      '6', 
      'six '), 
     '7', 
     'seven '), 
     '8', 
     'eight '), 
    '9', 
    'nine ' 
+0

У меня был синтаксис на одну замену. Спасибо, проблема решена. – user3404204