Translate

domingo, 30 de julho de 2017

Exibir uma lista de views de um banco de dados no PostgreSql

Há três formas para exibir uma lista com as views de um banco no PostgreSql :

1ª) Comando psql: você pode utilizar o comando \dv
Neste exemplo, vamos listar as views do banco: db_teste





2ª) Utilizar a view "pg_views" para fazer uma consulta. Esta view armazena informações sobre as views do banco e já está por padrão no catálogo de objetos do postgresql. Veja a sua localização na imagem abaixo:



A consulta para listar as views (inclusive as que são padrão do banco) é:


SELECT viewname FROM pg_views ORDER BY viewname ;

Caso queira listar somente as views criada por você, faça um filtro no schema, neste exemplo só foram criadas tabelas no schema "public" que é padrão do postgresql. 

SELECT viewname FROM pg_views
WHERE schemaname = 'public'  
ORDER BY viewname;


3ª) Utilize a view "views" para listar suas views. Esta view já está por padrão no catálogo de objetos do postgresql em information_schema

O information_schema é um padrão ANSI, que contém views que fornecem informações sobre o banco de dados: tabela, views, colunas e procedures.

Veja a sua localização na imagem abaixo:



SELECT table_name FROM information_schema.views WHERE table_schema = 'public';

Se quiser listar todas as "views"  inclusive as que são padrão do banco, execute a sentença abaixo:

SELECT table_name FROM information_schema.views;

VISUALIZAR O CONTEÚDO DE UMA VIEW ATRAVÉS DA LINHA DE COMANDO

Para visualizar o conteúdo de uma view utilize o comando psql \d+ nome_view. 
Neste caso:
  \d+ vw_clientes
Veja a imagem abaixo:




sábado, 29 de julho de 2017

Postgresql - Função rpad

Neste artigo, vamos mostrar 2 exemplos, da utilização da função RPAD.
 
Utilizamos a função RPAD para completar uma string do lado direito com determinado(s) caractere(s).

Veja o script dos exemplos no GitHub ou faça o download no Google Drive.

SINTAXE

RPAD (string, posicao_de_caracteres, 'caracter_para_preechimento')
  • string: sequëncia de caracteres;  
  • posicao_de_caracteres: indica até que posição a string será preenchida;
  • caracter_para_preechimento: caractere(s) utilizado(s) para o preenchimento, estes caracteres devem estar entre aspas;
1º Exemplo

Completar com o asterisco (*) a direita dos nomes dos produtos até a 10ª posição.  
Neste exemplo, vamos utilizar a coluna "nome_produto" tabela "tb_produto", exibida na imagem abaixo.


tb_produto
Solução

SELECT
nome_produto,
RPAD (nome_produto,10, '*') AS nome_produto_com_asterisco
FROM tb_produto;

Após a execução da sentença, teremos o seguinte resultado:



Observações
  • lápis:        tem 5  caracteres e foi preenchida com 5 caracteres para completar as 10 posições;
  • caderno:  tem 7  caracteres e foi preenchida com 3 caracteres para completar as 10 posições;
  • borracha: tem 8 caracteres e foi preenchida com 2 caracteres para completar as 10 posições;
  • cartolina: tem 9 caracteres e foi preenchida com 1 caractere  para completar as  10 posições;
No lugar do asterisco (*), poderíamos utilizar qualquer outro caractere alfanumérico ou caractere especial.
Por exemplo: uma ou mais letras, dígitos, espaços, hífen entre outros.
  
2º Exemplo

Preencher com asterisco (*) a direita, até a 5ª posição, os códigos dos produtos.
Neste exemplo, vamos utilizar a coluna "codigo_produto" tabela "tb_produto", exibida na imagem abaixo.

tb_produto

Solução


Como a função RPAD completa uma string, antes de utilizarmos a função RPAD, neste exemplo, devemos utilizar a função CAST para converter a coluna codigo_produto que é do tipo integer (número inteiro) para string (CHARACTER VARYING ou VARCHAR como é mais conhecido).

SELECT
RPAD (CAST(codigo_produto AS VARCHAR), 5, '*') AS codigo_produto, 
nome_produto
FROM tb_produto;

Após a execução da sentença, teremos o seguinte resultado:



Observações
  • O número   8426 tem   4 dígitos, e foi preenchido com 1 * para completar 5 dígitos;
  • O número     438 tem   3 dígitos, e foi preenchido com 2 * para completar 5 dígitos;  
  • O número       22 tem   2 dígitos, e foi preenchido com 3 * para completar 5 dígitos;
  • O número 16547 tem   5 dígitos, logo não foi preenchido com *, pois já contém 5 dígitos;

Aprenda também a utiliza a função lpad:

http://jquerydicas.blogspot.com.br/2014/09/postgresql-funcao-lpad.html

Deixe o seu comentário ou sugestão.
Gostou?  Siga no Google +  ou Facebook

domingo, 9 de julho de 2017

Sql Server - função concat e operador de concatenação

Neste artigo, vamos apresentar exemplos da utilização do operador de concatenação e do uso da funçao concat no Sql Server. Tanto o "operador de concatenação" quanto a função "concat" servem para unir uma ou mais strings.

A função concat é mais simples de ser utilizada do que o operador de concatenação, pois ela ignora dados nulos, e concatena diferentes tipos de dados sem necessitar de conversão, porém só pode ser utilizada na versão 2012 ou em versões posteriores.

Caso tenha interesse faça o download dos exemplos ou veja os scripts no GitHub.

Operador de concatenação

O operador de concatenação é representados por "+".

coluna_1 + coluna_2 + coluna_3
Exemplo:

Vamos apresentar os endereços completos das filiais de uma rede de varejo. 
Será utilizado os dados das colunas da tabela "locacao_filiais", exibida a seguir.
Antes de cada endereço vai ser exibida a string "Endereço: ".

Tabela: locacao_filiais


Para exibirmos os campos da tabela "locacao_filiais" concatenados, executamos a sentença abaixo:

SELECT 
'Endereço: ' +
tipo_logradouro + ' ' + 
logradouro + ' ' +
CAST(numero AS VARCHAR) + ' ' +
complemento + ' ' +
bairro
FROM locacao_filiais;

Após a execução da sentença, teremos os campos concatenados . Conforme podemos visualizar na imagem abaixo:



Observações: 

Concatenamos espaço em branco (' ') entre os campos para os dados não fiquem "grudados" uns nos outros.

Repare que utilizamos a função "CAST" para converter o campo "numero" que é do tipo int (valor inteiro) para varchar (texto). Se concatenarmos valores numéricos e não utilizarmos o CAST ocorrerá o seguinte erro:

Mensagem 245, Nível 16, Estado 1, Linha 52
Falha ao converter o varchar valor 'Endereço: Avenida Domingos de Moraes ' para o tipo de dados int.

Você deve estar pensando o que ocorreu? Por que somente o primeiro registro apareceu concatenado? Cadê os outros?

Se você observar os dois últimos registros, verá que eles não possuem dados na coluna complementoou seja, os dados são nulos nesta coluna. Ao fazer uma concatenação com um dado nulo, o resultado é nulo.

Como vamos resolver isto?

Antes de fazer a concatenação da coluna complemento faremos uma verificação. Se houver dados no campo, faremos a concatenação com os dados deste campo. Caso contrário substituiremos o dado nulo por uma string vazia  ('').  Para isso utilizaremos a função coalesce, conforme exibido na sentença abaixo.

SELECT 
'Endereço: ' +
tipo_logradouro + ' ' + 
logradouro + ' ' +
CAST(numero AS VARCHAR) + ' ' +
COALESCE(complemento, '') + ' ' +
bairro
FROM locacao_filiais;

Após a execução da sentença, os dados dos três registros serão exibidos. Conforme podemos visualizar na imagem abaixo:



O nome da coluna será exibido como "(Nenhum nome de coluna)". Caso queira alterar este nome, crie um alias (apelido). Após o "AS" coloque o nome da coluna que você precisa. Neste exemplo, eu vou chamá-la de filiais.


SELECT 
'Endereço: ' +
tipo_logradouro + ' ' + 
logradouro + ' ' +
CAST(numero AS VARCHAR) + ' ' +
COALESCE(complemento, '') + ' ' +
bairro
AS filiais
FROM locacao_filiais;


Após a execução da sentença, o nome da coluna será exibido como "filiais", conforme exibido na imagem abaixo:



Função concat

A função concat surgiu a partir da versão 2012, logo ela funcionará nesta versão ou em versões posteriores. Ela tem função similar ao operador de concatenação "+". Ela possui duas  vantagens: além de unir valores numérico sem utilizar conversão, também ignora dados nulos.

Exemplo:

Este exemplo é bem parecido com o primeiro exemplo. 
Vamos apresentar os endereços completos das filiais de uma rede de varejo, mas agora será utilizada a função concat
Será utilizado os dados das colunas da tabela "locacao_filiais", exibida a seguir.
Antes de cada endereço vai ser exibida a string "Endereço: ".


Tabela: locacao_filiais


Na funcão concat os dados que serão utilizados deverão estar entre virgulas. 

CONCAT(coluna_1, coluna_2, coluna_3, ....)

Utilizamos a função concat na sentença abaixo:

SELECT
CONCAT
(
    'Endereço: ', tipo_logradouro' ', logradouro, ' ', numero, ' ', complemento, ' ', bairro
)
FROM locacao_filiais;

Observação: Concatenamos espaço em branco (' ') entre os campos para os dados não ficarem "grudados" uns nos outros.

Após a execução da sentença será exibido o resultado a seguir:


Perceba que foram exibidos os três registros concatenados e não houve a necessidade de se preocupar em tratar os dados nulos, pois na função concat eles são ignorados.

O nome da coluna será exibido como "(Nenhum nome de coluna)". Caso queira alterar este nome, crie um alias (apelido). Após o "AS" coloque o nome da coluna que você precisa. Neste exemplo, eu vou chamá-la de filiais.

SELECT
CONCAT
(
    'Endereço: ', tipo_logradouro' ', logradouro, ' ', numero, ' ', complemento, ' ', bairro
) AS filiais
FROM locacao_filiais;

Após a execução da sentença, o nome da coluna será exibido como "filiais", conforme exibido na imagem abaixo: 


Deixe o seu comentário ou sugestão.
Gostou?  Siga no Google + ou Facebook.