TEXT_TO_NUMERIC_ALT - Amazon Redshift

TEXT_TO_NUMERIC_ALT

TEXT_TO_NUMERIC_ALT は、Teradata 形式のキャストオペレーションを実行して、文字列を数値データ形式に変換します。

構文

TEXT_TO_NUMERIC_ALT (expression [, 'format'] [, precision, scale])

引数

expression

1 つ以上の CHAR 値または VARCHAR 値 (列名、リテラルなど) に評価される式。null 値を変換すると、null が返されます。空白または空の文字列は 0 に変換されます。

format

入力式の形式を定義する文字列リテラル。詳細については、「数値データの Teradata スタイルの書式文字」を参照してください。

precision

数値結果の桁数。デフォルトは 38 です。

scale

数値結果の小数点の右側の桁数です。デフォルトは 0 です。

戻り型

TEXT_TO_NUMERIC_ALT は、10 進数値を返します。

指定した形式のフレーズへの変換に成功できなかった場合、Amazon Redshift はエラーを返します。

Amazon Redshift は、入力の文字列を、精度オプションでその型に指定した最高の精度で数値型にキャストします。数値の長さが精度のために指定した値を超える場合、Amazon Redshift は次のルールに従って数値を四捨五入します。

  • キャスト結果の長さが形式フレーズで指定した長さを超える場合、Amazon Redshift はエラーを返します。

  • 結果が数値にキャストされる場合、結果は最も近い値に四捨五入されます。小数部分がキャスト結果のちょうど真ん中にある場合、結果は最も近い偶数値に四捨五入されます。

次の例では、入力の文字列 '1.5' を数値 '2' に変換します。ステートメントはスケールを指定しないため、スケールはデフォルトで 0 になり、キャスト結果には分数の結果が含まれません。.5 は 1 と 2 の中間であるため、キャスト結果は偶数値 2 に四捨五入されます。

select text_to_numeric_alt('1.5');
text_to_numeric_alt --------------------- 2

次の例では、入力の文字列 '2.51' を数値 '3' に変換します。ステートメントはスケール値を指定しないため、スケールはデフォルトで 0 になり、キャスト結果には分数の結果が含まれません。.51 は 2 より 3 に近いので、キャスト結果は 3 の値に四捨五入されます。

select text_to_numeric_alt('2.51');
text_to_numeric_alt --------------------- 3

次の例では、精度 10、スケール 2 の入力で文字列 123.52501 を数値 123.53 に変換します。

select text_to_numeric_alt('123.52501', 10, 2);
text_to_numeric_alt --------------------- 123.53

次の例では、形式フレーズ '999S' を含む入力式の文字列 '123{' を数値 1230 に変換します。S 文字は、符号付きゾーン 10 進数を示します。詳細については、「数値データの Teradata スタイルの書式文字」を参照してください。

select text_to_numeric_alt('123{', '999S');
text_to_int_alt ---------- 1230

次の例では、形式フレーズ 'C9(I)' を含む入力式の文字列 'USD123' を数値 124 に変換します。数値データの Teradata スタイルの書式文字」を参照してください。

select text_to_numeric_alt('USD123.9', 'C9(I)');
text_to_numeric_alt ---------- 124

次の例では、入力としてテーブル列を指定しています。

select text_to_numeric_alt(a), text_to_numeric_alt(b) from t_text2numeric order by 1;
text_to_numeric_alt | text_to_numeric_alt -----------------------------------------+----------------------------------------- -99999999999999999999999999999999999999 | -99999999999999999999999999999999999999 -12300 | -12300 123 | 123 123 | 123 99999999999999999999999999999999999999 | 99999999999999999999999999999999999999

以下は、この例のテーブル定義と挿入のステートメントです。

create table t_text2numeric (a varchar(200), b char(200));
insert into t_text2numeric values ('123', '123'), ('+123.456', '+123.456'), ('-' || repeat('9', 38), '-' || repeat('9', 38)), (repeat('9', 38) || '+', repeat('9', 38) || '+'), ('-123E2', '-123E2');