- Categorias:
Funções de dados semiestruturados e estruturados (Matriz/objeto)
ARRAY_DISTINCT¶
Retorna uma nova ARRAY que contém somente os elementos distintos da ARRAY de entrada. A função exclui qualquer elemento duplicado presente no ARRAY de entrada.
A função não garante o retorno de elemento na ARRAY em uma ordem específica.
A função é NULL-safe, o que significa que ela trata NULLs como valores conhecidos ao identificar elementos duplicados.
Sintaxe¶
ARRAY_DISTINCT( <array> )
Argumentos¶
array
Uma matriz que possa conter elementos duplicados a serem removidos.
Retornos¶
Esta função retorna uma ARRAY que contém os elementos das matrizes de entrada sem elementos duplicados. Por exemplo, se o valor 'x'
aparecer várias vezes na ARRAY de entrada, somente um elemento terá o valor 'x'
na ARRAY retornada.
Se o argumento da entrada for NULL, a função retornará NULL.
A ordem dos valores dentro da matriz retornada não está especificada.
Notas de uso¶
Para elementos do tipo OBJECT, os objetos devem ser idênticos para serem considerados duplicados. Para obter mais detalhes, consulte Exemplos (neste tópico).
Ao identificar elementos duplicados, a função considera NULL como um valor conhecido (ou seja, NULL não é uma duplicata de qualquer outro valor X além de NULL).
Exemplos¶
O seguinte exemplo demonstra como a função retorna uma ARRAY sem os elementos duplicados A
de NULL
de uma ARRAY de entrada constante:
SELECT ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]);
+---------------------------------------------+
| ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]) |
|---------------------------------------------|
| [ |
| "A", |
| "B", |
| undefined |
| ] |
+---------------------------------------------+
O exemplo a seguir demonstra como passar em NULL (em vez de uma ARRAY) retorna NULL:
SELECT ARRAY_DISTINCT(NULL);
+----------------------+
| ARRAY_DISTINCT(NULL) |
|----------------------|
| NULL |
+----------------------+
O exemplo a seguir demonstra como a função remove OBJECTs duplicados em uma ARRAY de entrada. O exemplo usa constantes de OBJECT e constantes de ARRAY para construir OBJECTs e ARRAY.
SELECT ARRAY_DISTINCT( [ {'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 1, 'b': 3} ] );
+----------------------------------------------------------------------------+
| ARRAY_DISTINCT( [ {'A': 1, 'B': 2}, {'A': 1, 'B': 2}, {'A': 1, 'B': 3} ] ) |
|----------------------------------------------------------------------------|
| [ |
| { |
| "a": 1, |
| "b": 2 |
| }, |
| { |
| "a": 1, |
| "b": 3 |
| } |
| ] |
+----------------------------------------------------------------------------+
Como mostrado no exemplo, o último elemento não é considerada uma duplicata pois b
tem um valor diferente (3
, não 2
).