표준 SQL의 함수 호출 규칙

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

  • 숫자 유형을 허용하는 함수의 경우, 한 피연산자가 부동 소수점 피연산자이고 다른 피연산자가 다른 숫자 유형이라면 함수가 평가되기 전에 두 피연산자 모두 FLOAT64로 변환됩니다.
  • 피연산자가 NULL이면 결과도 NULL입니다(IS 연산자 제외).

  • 시간대를 구분하는 함수의 경우(함수 설명에 나와 있음) 시간대를 지정하지 않으면 기본 시간대인 UTC가 사용됩니다.

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          |
+-------------+

지원되는 함수

BigQuery는 STRING 함수, 수학 함수, DATE 함수, DATETIME 함수, TIMESTAMP 함수 등 오류를 생성할 수 있는 대부분의 스칼라 함수에서 SAFE. 접두사 사용을 지원합니다. BigQuery는 집계 함수, 분석 함수, 사용자 정의 함수에서 SAFE. 접두사 사용을 지원하지 않습니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.