- カテゴリ:
TO_DECIMAL , TO_NUMBER , TO_NUMERIC¶
入力式を固定小数点数に変換します。
これらの関数は同義語です。
- こちらもご参照ください。
構文¶
引数¶
必須:
expr数値、文字、またはバリアント型の式です。
オプション:
format入力
exprを解析して返すために使用される SQL 形式モデル。詳細については、 SQL 形式モデル をご参照ください。precision1から38までの、結果の数値の10進数の最大数です。Snowflakeでは、精度を使用して、数値を保存するために必要なバイト数の決定が行われず、効率に影響しないため、デフォルトは最大(38)です。
scale小数の桁数です(0から
precision-1まで)。0は、小数桁がないこと(つまり、整数)を示します。デフォルトのスケールは0です。
戻り値¶
この関数は、デフォルトで型 NUMBER の値を返します。
precisionが指定されていない場合、デフォルトは38になります。scaleが指定されていない場合、デフォルトは0になります。
NULL の入力に対して、NULLを返します。
使用上の注意¶
固定小数点数の場合:
異なる目盛りを持つ数値は、ゼロを右に加えるか(目盛りを大きくする必要がある場合)、四捨五入によって端数桁数を減らす(目盛りを小さくする必要がある場合)ことによって変換されます。
固定小数点数から固定小数点数へのキャストは、スケールが大きくなると失敗する可能性があることに注意してください。
浮動小数点数の場合:
数値は、スケールが与えられた表現可能な範囲内にある場合に変換されます。
2進数と10進数の小数間の変換は正確ではありません。その結果、精度が落ちたり、範囲外の誤差が生じたりする可能性があります。
無限大および NaN (非数値)は、変換エラーになります。
文字列は、10進数、整数、小数、浮動小数点数として変換されます。
端数入力の場合、精度は小数点以下の桁数で計算されます。
浮動小数点入力の場合、仮数または指数を省略することができ、0として解釈されます。したがって、
Eは0として解析されます。
VARIANT 入力の場合、
バリアントに固定小数点または浮動小数点の数値が含まれていると、適切な数値変換が実行されます。
バリアントに文字列が含まれていると、文字列変換が実行されます。
バリアントにブール値が含まれていると、結果は0または1(それぞれfalseおよびtrueに対応)になります。
バリアントに JSON
null値が含まれていると、出力は NULL です。
例¶
VARCHAR 列を持つテーブルを作成し、テーブルから文字列値を取得し、それらの値を precision と scale の異なる値で TO_NUMBER 関数に渡します。
クエリは次の出力を返します。
同じテーブルで TO_NUMBER 関数を使用して、 10 の precision と 9 のスケールを持つ数値を返すクエリを試します。
precision 引数を 10 に設定すると、結果の小数点以下の桁数の最大値は10になります。テーブルの値はどちらも小数点の前に2桁あり、 scale は 9 に設定されているため、結果は11桁を返すことになり、クエリがエラーを返します。
異なる 形式要素 と TO_DECIMAL 関数をクエリで使用します。
クエリは次の出力を返します。
出力は、 TM9 text-minimal format要素が、指定されたスケールに基づき、小数部の桁数を正確に印字することを示しています。詳細については、 テキスト最小の数値形式 をご参照ください。
コンマで区切られた桁数のグループの数値を変換します。
クエリは次の出力を返します。
コンマで区切られた桁数のグループの通貨値を変換します。
クエリは次の出力を返します。
16進数値を10進数値に変換するには、 X形式要素 と TO_DECIMAL 関数を使用します。
クエリは次の出力を返します。
形式要素の桁数は、式の桁数以上でなければなりません。たとえば、次のクエリを実行してみます。
クエリーは次のエラーを返します。