TO_CHAR (数値)
構文
to_char_number::=
目的
TO_CHAR
(数値)は、n
を、オプションの数値書式fmt
を使用してVARCHAR2
データ型の値に変換します。n
値には、NUMBER
、BINARY_FLOAT
またはBINARY_DOUBLE
型の値を指定できます。fmt
を指定しないと、n
の有効桁数を保持するために十分な長さのVARCHAR2
値に変換されます。
n
が負の場合、書式が適用された後で符号が適用されます。したがって、TO_CHAR(-1, '$9')
は、$-1ではなく-$1を戻します。
数値書式の詳細は、「書式モデル」を参照してください。
'nlsparam'
引数には、数値書式要素によって戻される次の文字を指定します。
-
小数点文字
-
桁区切り
-
各国通貨記号
-
国際通貨記号
この引数は、次の書式で指定します。
'NLS_NUMERIC_CHARACTERS = ''dg'' NLS_CURRENCY = ''text'' NLS_ISO_CURRENCY = territory '
文字d
およびg
は、それぞれ小数点文字および桁区切りを表します。これらは、異なるシングルバイト文字である必要があります。引用符付き文字列の中では、パラメータ値を囲む一重引用符を2つ使用する必要があります。通貨記号には10文字使用できます。
'nlsparam'
またはパラメータのいずれか1つを省略すると、このファンクションはセッションのデフォルト・パラメータ値を使用します。
関連項目:
-
このファンクションの文字の戻り値に割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
次の文は、暗黙的な変換を使用して、文字列と数値を数値に結合します。
SELECT TO_CHAR('01110' + 1) FROM DUAL; TO_C ---- 1111
この例と、「TO_CHAR(文字)」の最初の例を比較してください。
次の例では、出力で通貨記号の左側に空白埋めが行われます。オプションの数値書式fmtでは、L
は各国通貨記号を、MI
は後に付くマイナス記号(-)を表します。数値書式要素の完全なリストは、表2-16を参照してください。例は、セッション・パラメータNLS_TERRITORY
がAMERICA
に設定されたセッションの出力を示します。
SELECT TO_CHAR(-10000,'L99G999D99MI') "Amount" FROM DUAL; Amount -------------- $10,000.00-
次の例では、NLS_CURRENCY
には、L
数値書式要素について各国通貨記号として使用する文字列を指定します。NLS_NUMERIC_CHARACTERS
は、カンマをD
数値書式要素の小数点区切りとして使用する文字に指定し、ピリオドをG
数値書式要素のグループ区切りとして使用する文字に指定します。これらの文字は、ドイツなどの多くの国で想定されます。
SELECT TO_CHAR(-10000,'L99G999D99MI', 'NLS_NUMERIC_CHARACTERS = '',.'' NLS_CURRENCY = ''AusDollars'' ') "Amount" FROM DUAL; Amount ------------------- AusDollars10.000,00-
次の例では、NLS_ISO_CURRENCY
は、C
数値書式要素のPOLAND
地域に国際通貨記号を使用するようデータベースに指示します。
SELECT TO_CHAR(-10000,'99G999D99C', 'NLS_NUMERIC_CHARACTERS = '',.'' NLS_ISO_CURRENCY=POLAND') "Amount" FROM DUAL; Amount ----------------- -10.000,00PLN
TO_CHAR (number)ファンクション: 例
次の文は、empl_temp
という名前の表を作成し、従業員の詳細を移入します。
CREATE TABLE empl_temp
(
employee_id NUMBER(6),
first_name VARCHAR2(20),
last_name VARCHAR2(25),
email VARCHAR2(25),
hire_date DATE DEFAULT SYSDATE,
job_id VARCHAR2(10),
clob_column CLOB
);
INSERT INTO empl_temp
VALUES(111,'John','Doe','example.com','10-JAN-2015','1001','Experienced Employee');
INSERT INTO empl_temp
VALUES(112,'John','Smith','example.com','12-JAN-2015','1002','Junior Employee');
INSERT INTO empl_temp
VALUES(113,'Johnnie','Smith','example.com','12-JAN-2014','1002','Mid-Career Employee');
INSERT INTO empl_temp
VALUES(115,'Jane','Doe','example.com','15-JAN-2015','1005','Executive Employee');
次の文は、数値データをデータベース文字セットに変換します。
SELECT To_char(employee_id) "NUM_TO_CHAR"
FROM empl_temp
WHERE employee_id IN ( 111, 112, 113, 115 );
NUM_TO_CHAR
--------------------
111
112
113
115
Live SQL:
Oracle Live SQLのTO_CHARファンクションの使用で関連する例を参照して実行してください