Regras de chamada de função no SQL padrão

A menos que seja indicado de outra forma na descrição da função, as regras a seguir aplicam-se a todas as funções:

  • Para funções que aceitam tipos numéricos, se um operando for um ponto flutuante e o outro for um tipo numérico, ambos serão convertidos para FLOAT64 antes que a função seja avaliada.
  • Se um operando for NULL, o resultado será NULL, com exceção do operador IS.

  • Para funções que fazem diferenciação do fuso horário (conforme indicado na descrição da função), o fuso horário padrão, UTC, será usado se um não for especificado.

Prefixo SAFE.

Sintaxe:

SAFE.function_name()

Descrição

Se você começar uma função com o prefixo SAFE., ele retornará NULL em vez de um erro. O prefixo SAFE. só evita erros da própria função prefixada, e não os ocorridos durante a avaliação de expressões de argumentos. O prefixo SAFE. só evita erros ocorridos por causa do valor das entradas de função, como os do tipo "valor fora do intervalo". Outros erros, como os internos ou de sistema, ainda podem ocorrer. Se a função não retornar um erro, SAFE. não afetará a saída. Se a função jamais retornar um erro, como RAND, SAFE. não entrará em vigor.

O prefixo SAFE. não é aceito por operadores, como + e =. Para evitar erros de uma operação de divisão, use SAFE_DIVIDE. O prefixo SAFE. não é compatível com alguns operadores, como IN, ARRAY e UNNEST, apesar de eles parecerem funções. As funções CAST e EXTRACT também não aceitam o prefixo SAFE.. Para evitar erros de cast, use SAFE_CAST.

Exemplo

No exemplo a seguir, o primeiro uso da função SUBSTR normalmente retornaria um erro porque a função não aceita argumentos de comprimento com valores negativos. No entanto, o prefixo SAFE. faz a função retornar NULL. O segundo uso da função SUBSTR fornece a saída esperada: o prefixo SAFE. não entra em vigor.

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

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

Funções compatíveis

O BigQuery aceita o uso do prefixo SAFE. com a maioria das funções escalares que podem lançar erros, inclusive funções STRING, matemáticas, DATE, DATETIME e TIMESTAMP. O BigQuery não aceita o uso do prefixo SAFE. com funções agregadas, analíticas ou definidas pelo usuário.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.