

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# TEXT\$1TO\$1NUMERIC\$1ALT
<a name="r_TEXT_TO_NUMERIC_ALT"></a>

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

## 構文
<a name="r_TEXT_TO_NUMERIC_ALT-synopsis"></a>

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

## 引数
<a name="r_TEXT_TO_NUMERIC_ALT-arguments"></a>

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

 *format*   
入力式の形式を定義する文字列リテラル。詳細については、「[数値データの Teradata スタイルの書式文字](r_Numeric-format-teradata.md)」を参照してください。

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

 *\$1/scale*   
数値結果の小数点の右側の桁数です。デフォルトは 0 です。

## 戻り型
<a name="r_TEXT_TO_NUMERIC_ALT-return-type"></a>

TEXT\$1TO\$1NUMERIC\$1ALT は、10 進数値を返します。

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

Amazon Redshift は、入力*式*の文字列を、*精度*オプションでその型に指定した最高の精度で数値型にキャストします。数値の長さが*精度*のために指定した値を超える場合、Amazon Redshift は次のルールに従って数値を四捨五入します。
+ キャスト結果の長さが*形式*フレーズで指定した長さを超える場合、Amazon Redshift はエラーを返します。
+ 結果が数値にキャストされる場合、結果は最も近い値に四捨五入されます。小数部分がキャスト結果のちょうど真ん中にある場合、結果は最も近い偶数値に四捨五入されます。

## 例
<a name="r_TEXT_TO_NUMERIC_ALT-examples"></a>

次の例では、入力*式*の文字列 '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\$1' を数値 1230 に変換します。****S 文字は、符号付きゾーン 10 進数を示します。詳細については、「[数値データの Teradata スタイルの書式文字](r_Numeric-format-teradata.md)」を参照してください。

```
select text_to_numeric_alt('123{', '999S');
```

```
text_to_int_alt
----------
      1230
```

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

```
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');
```