sql >> データベース >  >> RDS >> Oracle

OracleBIPublisherで数値を単語に変換する

    これは、それを処理するために作成できる関数です

    SQL> create or replace
      2  function spell_number( p_number in number )
      3  return varchar2
      4  as
      5   type myArray is table of varchar2(255);
      6   l_str myArray := myArray( '',
      7     ' thousand ', ' million ',
      8     ' billion ', ' trillion ',
      9     ' quadrillion ', ' quintillion ',
      10    ' sextillion ', ' septillion ',
      11    ' octillion ', ' nonillion ',
      12    ' decillion ', ' undecillion ',
      13    ' duodecillion ' );
      14  
      15   l_num varchar2(50) default trunc( p_number );
      16   l_return varchar2(4000);
      17  begin
      18   for i in 1 .. l_str.count
      19   loop
      20   exit when l_num is null;
      21 
      22   if ( substr(l_num, length(l_num)-2, 3) <> 0 )
      23   then
      24   l_return := to_char(
      25   to_date(
      26   substr(l_num, length(l_num)-2, 3),
      27   'J' ),
      28   'Jsp' ) || l_str(i) || l_return;
      29   end if;
      30   l_num := substr( l_num, 1, length(l_num)-3 );
      31  end loop;
      32 
      33  return l_return;
      34 end;
      35 /
    
    Function created.
    
    SQL> select
      2    spell_number( 12345678901234567890123456789012345678 )
      3  from dual;
    
    SPELL_NUMBER(1234567890123456789012345678901234567
    --------------------------------------------------
    Twelve undecillion Three Hundred Forty-Five decill
    ion Six Hundred Seventy-Eight nonillion Nine Hundr
    ed One octillion Two Hundred Thirty-Four septillio
    n Five Hundred Sixty-Seven sextillion Eight Hundre
    d Ninety quintillion One Hundred Twenty-Three quad
    rillion Four Hundred Fifty-Six trillion Seven Hund
    red Eighty-Nine billion Twelve million Three Hundr
    ed Forty-Five thousand Six Hundred Seventy-Eight
    



    1. テーブルでVARCHAR(MAX)を使用することに不利な点はありますか?

    2. MySQL:LIKEで2つのテーブルを結合します

    3. サブクエリの結果を除外するMySQLの「WHERE」句

    4. コースの先生の名前を取得する方法