TEXT_TO_NUMERIC_ALT - Amazon Redshift

TEXT_TO_NUMERIC_ALT

TEXT_TO_NUMERIC_ALT는 Teradata 스타일 캐스트 작업을 수행하여 문자열을 숫자 데이터 형식으로 변환합니다.

구문

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

인수

expression

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

format

입력 표현식의 형식을 정의하는 문자열 리터럴입니다. 자세한 내용은 숫자 데이터에 대한 Teradata 스타일 형식 지정 문자 단원을 참조하십시오.

precision

숫자 결과의 자릿수입니다. 기본값은 38입니다.

사용

숫자 결과에서 소수점 오른쪽의 자릿수입니다. 기본값은 0입니다.

반환 타입

TEXT_TO_NUMERIC_ALT는 DECIMAL 숫자를 반환합니다.

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

Amazon Redshift는 사용자가 precision 옵션에서 해당 형식에 대해 지정한 가장 높은 정밀도를 가진 숫자 형식으로 입력 expression 문자열을 캐스팅합니다. 숫자 값의 길이가 precision에 대해 지정한 값을 초과하는 경우 Amazon Redshift는 다음 규칙에 따라 숫자 값을 반올림합니다.

  • 캐스트 결과의 길이가 format 구문에 지정한 길이를 초과하는 경우 Amazon Redshift는 오류를 반환합니다.

  • 결과가 숫자 값으로 캐스트되면 결과는 가장 가까운 값으로 반올림됩니다. 분수 부분이 상단 및 하단 캐스트 결과의 정확히 중간인 경우 결과는 가장 가까운 짝수 값으로 반올림됩니다.

예시

다음 예에서는 입력 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{'를 숫자 1230으로 변환합니다. S 문자는 Signed Zoned Decimal을 나타냅니다. 자세한 내용은 숫자 데이터에 대한 Teradata 스타일 형식 지정 문자 단원을 참조하십시오.

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

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

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