【问题标题】:SQL convert amount into word for each digit (including dollar, decimal, and comma)SQL 将每个数字的金额转换为单词(包括美元、小数和逗号)
【发布时间】:2015-12-30 05:45:23
【问题描述】:

我正在尝试通过 oracle SQL 为每个单独的数字将大笔金额转换为单词。例如: $555,555,555.55 = “美元五五五逗号五五五逗号五五五句五五”。

我尝试了将数字转换为单词的 Julian Date 版本,但它只上升到一万位,没有更大。

请帮忙。

【问题讨论】:

  • 听起来像是一大群REPLACEs 的工作。
  • 虽然在我发现this 有趣select to_char(to_date(28385,'j'),'jsp') 之后并不完全符合您的要求,但它仅适用于整数(无小数),但不能处理货币或逗号。到目前为止,替换似乎是最好的答案。
  • 那个方法就是我提到的朱利安日期。它不适用于我需要的大数字。不过谢谢。
  • Julian Date 版本无论如何都不能满足您的要求 - 它不会将“555”转换为“五五五”,而是类似于“五百五十五”。

标签: sql oracle decimal word


【解决方案1】:

您可以使用嵌套替换:

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

【讨论】:

  • 哪个,对于生产,我建议为可读性目的制作一个函数。
【解决方案2】:

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 '

【讨论】:

  • 我的语法被一个替换掉了。谢谢问题已解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多