PostgreSQL

Exemplos PostgreSQL UNNEST

Exemplos PostgreSQL UNNEST
Você pode especificar uma coluna no PostgreSQL como apenas um array de tipos de dados apropriados. Tipos de dados embutidos, especificados pelo usuário e inalienáveis ​​são todas possibilidades. Além disso, os arrays são muito relevantes no PostgreSQL. Você aprendeu sobre matrizes no PostgreSQL, incluindo como construir, consultar e às vezes até gerar matrizes com o método ARRAY. No entanto, há momentos em que eu gostaria de fazer o inverso e converter um array PostgreSQL em linhas. Existem muitas razões pelas quais você gostaria de fazer isso. Por um tempo, digamos que você esteja procurando a junção de duas matrizes. No PostgreSQL, o operador INTERSECT pode efetivamente fazer isso para dois conjuntos diferentes de linhas. No entanto, não há contrapartida para matrizes. Da mesma forma, o operador UNION une 2 pares de linhas; no entanto, não há nada comparável para matrizes. O método UNNEST parece ser o segredo de tudo isso. Ao consumir o UNNEST, você deve ter cuidado, pois (como a maioria dos sistemas de computador) o PostgreSQL faria qualquer coisa que você instruir, não exatamente o que você deseja que ele faça.

Para elaborar este conceito completamente, abra o shell de linha de comando do PostgreSQL instalado em seu sistema. Forneça o nome do servidor, o nome do banco de dados, o número da porta, o nome de usuário e a senha do usuário específico se não quiser começar a trabalhar com as opções padrão. Se você quiser trabalhar com parâmetros padrão, deixe todas as opções vazias e pressione Enter todas as opções. Agora seu shell de linha de comando está preparado para funcionar.

Exemplo 01: Definir dados de tipo de matriz

É uma boa ideia estudar os fundamentos antes de passar para a modificação de valores de array no banco de dados. Aqui está a maneira de especificar uma lista de tipo de texto. Você pode ver que a saída mostrou a lista de tipos de texto usando a cláusula SELECT.

>> SELECIONE 'Aqsa, Raza, Saeed' :: text [];

O tipo de dados deve ser definido ao escrever uma consulta. O PostgreSQL não reconhecerá o tipo de dado se parecer ser uma string. Como alternativa, podemos usar o formato ARRAY [] para especificá-lo como tipo de string, conforme mostrado abaixo na consulta. A partir da saída citada abaixo, você pode ver que os dados foram buscados como tipo de array usando a consulta SELECT.

>> SELECT ARRAY ['Aqsa', 'Raza', 'Saeed'];

Quando você seleciona os mesmos dados de matriz com a consulta SELECT enquanto usa a cláusula FROM, não funciona da maneira que deveria. Por exemplo, tente a consulta abaixo da cláusula FROM no shell. Você verificará se ocorrerá um erro. Isso ocorre porque a cláusula SELECT FROM assume que os dados que está buscando são provavelmente um grupo de linhas ou alguns pontos de uma tabela.

>> SELECT * FROM ARRAY ['Aqsa', 'Raza', 'Saeed'];

Exemplo 02: converter matriz em linhas

ARRAY [] é uma função que retorna um valor atômico. Como resultado, ele se encaixa apenas com SELECT e não com a cláusula FROM, pois nossos dados não estavam na forma de 'linha'. É por isso que obtivemos um erro no exemplo acima. Aqui está como usar a função UNNEST para converter os arrays em linhas enquanto sua consulta não está funcionando com a cláusula.

>> SELECIONE UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']);

Exemplo 03: converter linhas em matriz

Para converter as linhas em uma matriz novamente, temos que definir essa consulta específica dentro de uma consulta para fazer isso. Você tem que usar as duas consultas SELECT aqui. Uma consulta de seleção interna está convertendo uma matriz em linhas usando a função UNNEST. Enquanto a consulta SELECT externa está novamente convertendo todas essas linhas em uma única matriz, conforme mostrado na imagem citada abaixo. Atenção; você tem que usar grafias menores de 'array' na consulta SELECT externa.

>> SELECT array (SELECT UNNEST (ARRAY ['Aqsa', 'Raza', 'Saeed']));

Exemplo 04: Remover Duplicados Usando a Cláusula DISTINCT

DISTINCT pode ajudá-lo a extrair duplicatas de qualquer forma de dados. No entanto, requer necessariamente o uso de linhas como dados. Isso significa que este método funciona para inteiros, texto, flutuantes e outros tipos de dados, mas matrizes não são permitidas. Para remover duplicatas, você deve primeiro converter seus dados de tipo de matriz em linhas usando o método UNNEST. Depois disso, essas linhas de dados convertidas serão passadas para a cláusula DISTINCT. Você pode ter um vislumbre do resultado abaixo, que a matriz foi convertida em linhas, então apenas os valores distintos dessas linhas foram buscados usando a cláusula DISTINCT.

>> SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: text []);

Se você precisar de uma matriz como saída, use a função array () na primeira consulta SELECT e use a cláusula DISTINCT na próxima consulta SELECT. Você pode ver na imagem exibida que a saída foi mostrada na forma de array, não na linha. Embora a saída contenha apenas valores distintos.

>> SELECT array (SELECT DISTINCT UNNEST ('Aqsa, Raza, Saeed, Raza, Uzma, Aqsa' :: text []));

Exemplo 05: Remover duplicatas ao usar a cláusula ORDER BY

Você também pode remover os valores duplicados da matriz de tipo flutuante, conforme mostrado abaixo. Junto com a consulta distinta, usaremos a cláusula ORDER BY para obter o resultado na ordem de classificação de um valor específico. Tente a consulta abaixo indicada no shell da linha de comando para fazer isso.

>> SELECIONE DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []) ORDENAR POR 1;

Primeiro, a matriz foi convertida em linhas usando a função UNNEST; então, essas linhas serão classificadas em ordem crescente usando a cláusula ORDER BY conforme mostrado abaixo.

Para converter as linhas novamente em uma matriz, use a mesma consulta SELECT no shell enquanto a usa com uma pequena função de matriz alfabética (). Você pode dar uma olhada na saída abaixo de que a matriz foi convertida em linhas primeiro e, em seguida, apenas os valores distintos foram escolhidos. Por fim, as linhas serão convertidas em uma matriz novamente.

>> SELECT array (SELECT DISTINCT UNNEST ('2,85, 2.73, 2.85, 1.8, 2.73 ':: float []));

Conclusão:

Finalmente, você implementou com sucesso todos os exemplos deste guia. Esperamos que você não tenha nenhum problema ao executar os métodos UNNEST (), DISTINCT e array () nos exemplos.

Tutorial OpenTTD
OpenTTD é um dos jogos de simulação de negócios mais populares que existem. Neste jogo, você precisa criar um maravilhoso negócio de transporte. No en...
SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth é um dos jogos de estratégia de código aberto mais populares que você pode jogar no momento. Este jogo não está apenas em desen...