

 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*   
열 이름이나 리터럴 같이 하나 이상의 CHAR 또는 VARCHAR 값으로 평가되는 표현식입니다. null 값을 변환하면 마찬가지로 null이 반환됩니다. 빈 문자열은 0으로 변환됩니다.

 *형식*   
입력 표현식의 형식을 정의하는 문자열 리터럴입니다. 자세한 내용은 [숫자 데이터에 대한 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는 DECIMAL 숫자를 반환합니다.

Amazon Redshift는 지정한 *format* 구문으로의 변환이 성공하지 못한 경우 오류를 반환합니다.

Amazon Redshift는 사용자가 *precision* 옵션에서 해당 형식에 대해 지정한 가장 높은 정밀도를 가진 숫자 형식으로 입력 *expression* 문자열을 캐스팅합니다. 숫자 값의 길이가 *precision*에 대해 지정한 값을 초과하는 경우 Amazon Redshift는 다음 규칙에 따라 숫자 값을 반올림합니다.
+ 캐스트 결과의 길이가 *format* 구문에 지정한 길이를 초과하는 경우 Amazon Redshift는 오류를 반환합니다.
+ 결과가 숫자 값으로 캐스트되면 결과는 가장 가까운 값으로 반올림됩니다. 분수 부분이 상단 및 하단 캐스트 결과의 정확히 중간인 경우 결과는 가장 가까운 짝수 값으로 반올림됩니다.

## 예제
<a name="r_TEXT_TO_NUMERIC_ALT-examples"></a>

다음 예에서는 입력 *expression* 문자열 '1.5'를 정수 값 '2'로 변환합니다. 문이 *scale*을 지정하지 않기 때문에 *scale*의 기본값은 0이고 캐스트 결과에는 분수 결과가 포함되지 않습니다. .5는 1과 2의 중간이므로 캐스트 결과는 짝수 값인 2로 반올림됩니다.

```
select text_to_numeric_alt('1.5');
```

```
 text_to_numeric_alt
---------------------
                   2
```

다음 예에서는 입력 *expression* 문자열 '2.51'을 정수 값 3으로 변환합니다. 문이 *scale* 값을 지정하지 않기 때문에 *scale*의 기본값은 0이고 캐스트 결과에는 분수 결과가 포함되지 않습니다. .51은 2보다 3에 더 가깝기 때문에 캐스트 결과는 3 값으로 반올림됩니다.

```
select text_to_numeric_alt('2.51');
```

```
 text_to_numeric_alt
---------------------
                   3
```

다음 예에서는 *precision*이 10이고 *scale*이 2인 입력 *expression* 문자열 123.52501을 숫자 값 123.53으로 변환합니다.

```
select text_to_numeric_alt('123.52501', 10, 2);
```

```
 text_to_numeric_alt
---------------------
               123.53
```

다음 예에서는 *format* 구문이 '999S'인 입력 *expression* 문자열 '123\$1'를 숫자 1230으로 변환합니다. S 문자는 Signed Zoned Decimal을 나타냅니다. 자세한 내용은 [숫자 데이터에 대한 Teradata 스타일 형식 지정 문자](r_Numeric-format-teradata.md) 섹션을 참조하세요.

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

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

다음 예에서는 *format* 구문이 'C9(I)'인 입력 *expression* 문자열 'USD123'을 숫자 124로 변환합니다. [숫자 데이터에 대한 Teradata 스타일 형식 지정 문자](r_Numeric-format-teradata.md)을(를) 참조하세요.

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

```
text_to_numeric_alt
----------
       124
```

다음 예에서는 테이블 열을 입력 *expression*으로 지정합니다.

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