다음을 통해 공유


try_to_number 기능

적용 대상: 예(예)로 표시된 확인 Databricks SQL 예(예)로 표시된 확인 Databricks Runtime 11.3 LTS 이상

fmt 서식을 사용하는 DECIMAL로 expr 캐스트를 반환하고, expr이 형식과 일치하지 않는 경우에는 NULL을 반환합니다.

구문

try_to_number(expr, fmt)

fmt
  { ' [ MI | S ] [ L | $ ]
      [ 0 | 9 | G | , ] [...]
      [ . | D ]
      [ 0 | 9 ] [...]
      [ L | $ ] [ PR | MI | S ] ' }

인수

  • expr: 숫자를 나타내는 STRING 식입니다. expr에는 선행 또는 후행 공백이 포함될 수 있습니다.
  • fmt: expr의 올바른 형식을 지정하는 STRING 리터럴입니다.

반품

DECIMAL(p, s). 여기서 p는 총 자릿수(0 또는 9)이고 s는 소수점 자릿수입니다. 소수점 뒤에 숫자가 없는 경우에는 0입니다.

fmt는 다음 요소를 포함할 수 있습니다(대/소문자를 구분하지 않음).

  • 0 또는 9

    09 사이의 예상 숫자를 지정합니다. 소수점 왼쪽의 0expr에 적어도 많은 숫자가 있어야 함을 나타냅니다. 선행 9expr이 이러한 숫자를 생략할 수 있음을 나타냅니다.

    expr은 소수점 왼쪽에 허용되는 자릿수보다 크지 않아야 합니다.

    10진수 오른쪽의 숫자는 fmt에 지정된 expr의 소수점 오른쪽에 있을 수 있는 최대 자릿수를 나타냅니다.

  • . 또는 D

    소수점 위치를 지정합니다.

    expr은 소수점을 포함할 필요가 없습니다.

  • , 또는 G

    , 그룹화(천 단위) 구분 기호의 위치를 지정합니다. 각 그룹화 구분 기호의 왼쪽과 오른쪽에 0 또는 9가 있어야 합니다. expr은 숫자의 크기와 관련된 그룹화 구분 기호와 일치해야 합니다.

  • L 또는 $

    $ 통화 기호의 위치를 지정합니다. 이 문자는 한 번만 지정할 수 있습니다.

  • S 또는 MI

    S에는 선택적 '+' 또는 '-' 기호의 위치를 지정하고 MI에만 '-'를 지정합니다. 이 지시문은 한 번만 지정할 수 있습니다.

  • PR

    expr이 래핑하는 꺾쇠괄호(<1>)를 사용하는 음수를 나타냄을 지정합니다.

expr0~9 또는 fmt에 허용되는 문자 이외의 문자가 포함된 경우 NULL이 반환됩니다.

엄격한 의미 체계의 경우 to_number()를 사용합니다.

예제

-- The format expects:
--  * an optional sign at the beginning,
--  * followed by a dollar sign,
--  * followed by a number between 3 and 6 digits long,
--  * thousands separators,
--  * up to two dight beyond the decimal point.
> SELECT try_to_number('-$12,345.67', 'S$999,099.99');
 -12345.67

-- Plus is optional, and so are fractional digits.
> SELECT try_to_number('$345', 'S$999,099.99');
 345.00

-- The format requires at least three digits.
> SELECT to_number('$45', 'S$999,099.99');
 Error: Invalid number

-- The format requires at least three digits.
> SELECT try_to_number('$45', 'S$999,099.99');
 NULL

-- The format requires at least three digits
> SELECT try_to_number('$045', 'S$999,099.99');
 45.00

-- Using brackets to denote negative values
> SELECT try_to_number('<1234>', '999999PR');
 -1234