Translate

Mostrando postagens com marcador funções de manipulação de string. Mostrar todas as postagens
Mostrando postagens com marcador funções de manipulação de string. Mostrar todas as postagens

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.

sexta-feira, 1 de maio de 2015

Postgresql - Formatar CNPJ com REGEXP_REPLACE

Neste artigo, vamos mostrar um exemplo de como utilizar a função REGEXP_REPLACE para formatar o CNPJ.

Caso tenha interesse, veja o script no github ou faça o download 

1º Exemplo

Para formatar o CNPJ vamos utilizar a tabela "tb_cadastro", exibida na imagem a seguir:


 Solução



Observe que na função REGEXP_REPLACE:
  • Utiliza-se parenteses "( )" para separar cada parte da string, neste caso o CNPJ;
  • Utiliza-se "\d" para representar os digitos de "0" até "9";
  • Dentro das chaves "{}" deve ser colocado a quantidade de dígitos que vamos utilizar em cada parte; 
  • Utiliza-se contra-barra "\" antes de cada parte criada;
Após a execução da sentença, teremos o seguinte resultado:


Veja também:


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

sábado, 18 de abril de 2015

Postgresql - Formatar CPF com REGEXP_REPLACE

Neste artigo, vamos mostrar 3 exemplos de como utilizar a função REGEXP_REPLACE para formatar o CPF.
Veja qual o exemplo é mais fácil para você, eu considero o 3º exemplo o mais fácil de ser utilizado.

Caso tenha interesse, veja o script no github, faça o download ou execute no Sqlfiddle

1º Exemplo

Para formatar o CPF vamos utilizar a tabela "tb_alunos", exibida na imagem a seguir:

 Solução


Observe que na função REGEXP_REPLACE:
  • Utilizamos parenteses "( )" para separar cada parte da string, neste caso o CPF;
  • Utilizamos colchetes   "[ ]" para indicar quais os caracteres que iremos utilizar em cada parte, neste caso utilizamos caracteres numéricos de "0" até "9", representados pela expressão 0-9;
  • Indicamos dentro das chaves "{}" a quantidade de dígitos que vamos utilizar; 
  • Utilizamos contra-barra "\" antes de cada parte criada;
Após a execução da sentença, teremos o seguinte resultado:


 2º Exemplo

Também podemos substituir a expressão "0-9" que indica a utilização de caracteres numéricos de 0 até 9, pela expressão [:digit:]. O resultado será o mesmo. 

Solução



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


3º Exemplo

Para facilitar, podemos substituir a expressão "[[:digit:]]" que indica a utilização de caracteres numéricos de 0 até 9, pela expressão abreviada "\d". O resultado será o mesmo.

Solução




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


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

sábado, 11 de abril de 2015

Postgresql - Formatar CEP com REGEXP_REPLACE

Neste artigo, vamos mostrar 3 exemplos de como utilizar a função REGEXP_REPLACE para formatar CEP. 
Veja qual a forma é mais simples para você, eu considero a do 3º exemplo.

Caso tenha interesse, veja o script no github, faça o download ou execute no Sqlfiddle

1º Exemplo

Para formatar o CEP vamos utilizar a tabela "tb_endereco", exibida na imagem a seguir:


Solução

Observe que na função REGEXP_REPLACE:
  • Utilizamos parenteses "( )" para separar cada parte da string, neste caso o CEP;
  • Utilizamos colchetes   "[ ]" para indicar quais os caracteres que iremos utilizar em cada parte, neste caso utilizamos caracteres numéricos de "0" até "9", representados pela expressão 0-9;
  • Indicamos dentro das chaves "{}" a quantidade de dígitos que vamos utilizar; 
  • Utilizamos contra-barra "\" antes de cada parte criada;
Após a execução da sentença, teremos o seguinte resultado:


 2º Exemplo

Podemos substituir a expressão "0-9" que indica a utilização de caracteres numéricos de 0 até 9, pela expressão "[:digit:]". O resultado será o mesmo. 

Solução


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



3º Exemplo

Para facilitar, podemos substituir a expressão "[[:digit:]]" que indica a utilização de caracteres numéricos de 0 até 9, pela expressão abreviada "\d". O resultado será o mesmo.

Solução



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


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

sábado, 13 de setembro de 2014

Postgresql - função LPAD

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

O script dos exemplos, também estão no GitHub.

SINTAXE

LPAD (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 hifen (-) a esquerda 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,
LPAD (nome_produto,10, '-') AS nome_produto_com_hifen
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 hífen (-), poderiamos utilizar qualquer outro caractere alfanumérico ou caractere especial.
Por exemplo: uma ou mais letras, dígitos, espaços, asterisco entre outros.
  
2º Exemplo

Preencher com zeros "0" a esquerda, 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 LPAD completa uma string, antes de utilizarmos a função LPAD, 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
LPAD (CAST(codigo_produto AS VARCHAR), 5, '0') 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 zero  para completar 5 dígitos;
  • O número     438 tem   3 dígitos, e foi preenchido com 2 zeros para completar 5 dígitos;  
  • O número       22 tem   2 dígitos, e foi preenchido com 3 zeros para completar 5 dígitos;
  • O número 16547 tem   5 dígitos, logo não foi preenchido com zeros, pois já contém 5 dígitos;
Aprenda também a utilizar a função rpad:
http://jquerydicas.blogspot.com.br/2017/07/postgresql-funcao-rpad.html

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

domingo, 7 de setembro de 2014

Postgresql - Função replace

Neste artigo, vamos mostrar 3 exemplos da utilização da função replace. O script dos exemplos também estão disponíveis no Git Hub

Podemos utilizar a função replace para substituir:
  • uma ou mais palavras de uma de string;  
  • um ou mais caracteres de uma string; 
SINTAXE
REPLACE(COLUNA, DE, PARA)

  • COLUNA: coluna da tabela;
  • DE: o conteúdo que vamos substituir;
  • PARA: o novo conteúdo;
1º Exemplo

Substituir a abreviatura VW  pela palavra Wolkswagen.  
Neste exemplo, vamos utilizar a coluna "modelo_veículo" da tabela "tb_veículo". Veja a tabela a seguir:

tb_veiculo
Solução:

Para fazer a substituição utilizamos a sentença abaixo:

SELECT
modelo_veiculo,
REPLACE(
modelo_veiculo, '
VW', 'Wolkswagen') AS substituicao  
FROM tb_veiculo


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




2º Exemplo

Substituir:
  • a abreviatura VW  pela palavra Wolkswagen;
  • a abreviatura GM  pela palavra General Motors; 
Neste exemplo, também vamos utilizar a coluna "modelo_veículo" da tabela "tb_veículo". 

tb_veiculo
Solução:

Para fazer a substituição, além da função, REPLACE vamos utilizar a condição "CASE  WHEN" para substituir a sigla de acordo com a situação. 

Obs: Caso tenha interesse, veja o artigo: PostgreSql - Exemplo CASE WHEN

Veja a sentença abaixo:

SELECT
modelo_veiculo,
CASE
    WHEN (modelo_veiculo LIKE '%
VW%') 
        THEN REPLACE(modelo_veiculo, 'VW', 'Wolkswagen')
   
WHEN (modelo_veiculo LIKE '%GM%') 
       THEN REPLACE(modelo_veiculo, 'GM', 'General Motors')   
END  AS substituicao
FROM tb_veiculo


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


3 º Exemplo

Substituir o caractere "o" pelo caractere "a" de uma mensagem. Neste exemplo, vamos utilizar a coluna "mensagem" da tabela "tb_mensagem". Veja a tabela a seguir:

tb_mensagem

Para exibir a substituição utilizamos a sentença abaixo:

SELECT
data,
mensagem, 
REPLACE(
mensagem, 'o', 'a') AS nova_mensagem
FROM tb_mensagem;


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


Deixe o seu comentário ou sugestão sobre este artigo.
Gostou? Curta a nossa página.