Oracle 11g R2 スキーマのセットアップ :
CREATE TABLE numbers ( value ) ASSELECT 0 FROM DUAL UNION ALLSELECT 123456 FROM DUAL UNION ALLSELECT 12345678 FROM DUAL UNION ALLSELECT 1234567890123 FROM DUAL UNION ALLSELECT 123456789012345 FROM DUAL UNION ALLSELECT 900000000000000 FROM DUAL UNION ALLSELECT 700000001200000 FROM DUAL UNION ALLSELECT 543000000000000 FROMデュアル;コード> プレ>
クエリ 1 :
WITH rsqfc (オリジナル、値、サフィックス、結果、lvl、mxlvl) AS (SELECT 値、TRUNC(値 / 10000000)、CAST( 'CRORE' AS VARCHAR2(4000) )、CAST( RTRIM( CASE WHEN MOD( TRUNC( 値 / 100000 ), 100 )> 0 THEN TO_CHAR( TO_DATE( MOD( TRUNC( 値 / 100000 ), 100 ), 'J' ), 'JSP' ) || ' LAKH ' END || CASE WHEN値 =0 THEN 'ZERO' WHEN MOD( 値, 100000 )> 0 THEN TO_CHAR( TO_DATE( MOD( 値, 100000 ), 'J' ), 'JSP' ) || ' ' END ) AS VARCHAR2(4000) ), 1, CEIL( LENGTH( ABS( 値 ) ) / 7 ) FROM 数字UNION ALL SELECT オリジナル, TRU NC( 値 / 10000000 ), 'CRORE' ||サフィックス, RTRIM( CASE WHEN MOD( TRUNC( 値 / 100000 ), 100 )> 0 THEN TO_CHAR( TO_DATE( MOD( TRUNC( 値 / 100000 ), 100 ), 'J' ), 'JSP' ) || ' LAKH ' || サフィックス END || CASE WHEN MOD( 値, 100000 )> 0 THEN TO_CHAR( TO_DATE( MOD( 値, 100000 ), 'J' ), 'JSP' ) || ' ' || サフィックス END || 結果 ), lvl + 1, mxlvl FROM rsqfc WHERE lvl プレ>
結果
:
<プレ>|オリジナル |結果 ||-----------------|--------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------|| 0 |ゼロ || 123456 | || 1 ラック 2 万 3 千 4 万 56 || 12345678 | 1 億 23 万ルピー 4 万 5000 6 78 || 1234567890123 | 1 億 23,000 万 456 億 78 万ルピー 9 万 123 億 || 123456789012345 | 1 億 2,300 万ルピー 4,500 万 6,780 億 9,000 万 1,300 億 4,500 万900000000000000 | || 9 億ルピー || 700000001200000 | || 7 億ルピー 12 億ルピー || 543000000000000 | 5 億億ルピー 43 億ルピー |
プレ>