함수 호출 규칙

함수 설명에 달리 명시되어 있지 않는 한 모든 함수에는 다음 규칙이 적용됩니다.

  • 숫자 유형을 허용하는 함수의 경우 한 피연산자가 부동 소수점 피연산자이고 다른 피연산자가 다른 숫자 유형이라면 함수가 평가되기 전에 두 피연산자 모두 FLOAT64로 변환됩니다.
  • 피연산자가 NULL이면 결과도 NULL입니다(IS 연산자 제외).
  • 시간대를 구분하는 함수의 경우(함수 설명에 나와 있음) 시간대를 지정하지 않으면 기본 시간대(America/Los_Angeles)가 사용됩니다.

SAFE. 접두사

구문:

SAFE.function_name()

설명

스칼라 함수를 SAFE. 프리픽스로 시작하면 오류 대신 NULL을 반환합니다. SAFE. 프리픽스는 프리픽스가 붙은 함수 자체의 오류만 방지하며 인수 표현식을 평가하는 동안 발생하는 오류는 방지하지 않습니다. SAFE. 프리픽스는 '값이 범위를 벗어남' 오류와 같이 함수 입력 값 때문에 발생하는 오류만 방지하며, 내부 오류나 시스템 오류 같은 다른 오류는 여전히 발생할 수 있습니다. 함수가 오류를 반환하지 않으면 SAFE.는 출력에 영향을 미치지 않습니다. RAND같이 절대 오류를 반환하지 않는 함수에는 SAFE.는 아무런 영향이 없습니다.

+=와 같은 연산자SAFE. 프리픽스를 지원하지 않습니다. 나누기 연산의 오류를 방지하려면 SAFE_DIVIDE를 사용하세요. IN, ARRAY, UNNEST 같은 일부 연산자는 함수와 비슷하지만 SAFE. 프리픽스를 지원하지 않습니다. CASTEXTRACT 함수도 SAFE. 프리픽스를 지원하지 않습니다. 변환 오류를 방지하려면 SAFE_CAST를 사용하세요.

예시

다음 예시에서 SUBSTR 함수를 처음 사용하면 일반적으로 오류가 반환되는데, 함수가 음의 값을 가진 길이 인수를 지원하지 않기 때문입니다. 하지만 SAFE. 프리픽스가 있기 때문에 함수에서 대신 NULL을 반환합니다. SUBSTR 함수를 두 번째 사용하면 예상되는 출력이 제공되며, SAFE. 프리픽스는 영향을 미치지 않습니다.

SELECT SAFE.SUBSTR('foo', 0, -2) AS safe_output UNION ALL
SELECT SAFE.SUBSTR('bar', 0, 2) AS safe_output;

+-------------+
| safe_output |
+-------------+
| NULL        |
| ba          |
+-------------+