top of page

SQL CONCAT e SUBSTRING, exemplo prático

Foto do escritor: Marco BeltranMarco Beltran


A resolução Nº 553/10 da ANATEL de 14/12/2010 determinou que fosse implantado o 9º(nono) dígito aos números de telefone celular entre 07/2012 e 11/2016. Esse processo trouxe mudanças em todos os clientes de todas as empresas/organizações do País. Visando o aproveitamento de milhões de informações previamente cadastradas, houve a necessidade de uma mudança gradual nos Repositórios de Dados/Banco de Dados dos sistemas em questão.


Vamos construir um exemplo de sistaxes sql para realizar na prática o prorposta na alteração do nono digito. Para tanto vou partir de uma tabela com nome CadastroNumeros com os seguintes campos Codigo (auto numeração, inteiro, chave primaria), numerodocelular (inteirolongo, tamanho do campo=8, não permitido duplicação) e nomedoproprietario (texto, tamanho do campo=255, permite duplicação)


CRIANDO A TABELA



Com base na estrutura da tabela fornecida anteriormente, podemos criar a tabela "CadastroNumeros" utilizando a seguinte instrução SQL:

CREATE TABLE CadastroNumeros (  Codigo INT AUTO_INCREMENT PRIMARY KEY,  numerodocelular VARCHAR(8) NOT NULL UNIQUE,  nomedoproprietario VARCHAR(255) NOT NULL);

Essa instrução cria uma nova tabela com os campos "Codigo", "numerodocelular" e "nomedoproprietario". A coluna "Codigo" é um campo inteiro que será autoincrementado para cada novo registro inserido na tabela. A coluna "numerodocelular" é uma string de tamanho 8 que não pode ser nula e não permite valores duplicados. A coluna "nomedoproprietario" é uma string de tamanho 255 que permite valores duplicados.

PREENCHENDO A TABELA

Para inserir 5 registros iniciais com números de celular aleatórios e nomes aleatórios, podemos utilizar a seguinte instrução SQL:

INSERT INTO CadastroNumeros (numerodocelular, nomedoproprietario) VALUES   ('98765432', 'João da Silva'),  ('87654321', 'Maria Santos'),  ('76543210', 'Pedro Souza'),  ('65432109', 'Ana Oliveira'),  ('54321098', 'Fernando Costa');

Essa instrução insere 5 novos registros na tabela "CadastroNumeros", com números de celular e nomes aleatórios. A cláusula "INSERT INTO" é usada para especificar a tabela e as colunas que serão preenchidas. A cláusula "VALUES" é usada para especificar os valores que serão inseridos em cada coluna para cada registro.


OLHANDO A TABELA


Claro, segue a instrução SQL para exibir todos os registros da tabela CadastroNumeros:

SELECT * FROM CadastroNumeros;

Eis um exemplo de como exibir o resultado dessa consulta em um formato tabular:

Codigo | numerodocelular | nomedoproprietario
-------|----------------|-------------------
1      | 8234567        | João da Silva
2      | 9876543        | Maria dos Santos
3      | 8765432        | José Souza
4      | 7654321        | Ana Oliveira
5      | 6543210        | Pedro Pereira

ADICIONANDO O NONO DIGITO


Para adicionar o nono dígito aos números de telefone celular contidos na tabela "CadastroNumeros", primeiro lembrando que o tamanho do campo é para 8 caracteres, então devemos aumentar seu tamanho antes, assim podemos utilizar as seguintes instruções SQL para realizar a alteração do tamanho do campo numerodocelular e adicionar o nono dígito:

  1. Utilizando Linguagem de Definição de Dados (D.D.L.):

ALTER TABLE CadastroNumeros ALTER COLUMN numerodocelular VARCHAR(9);

Essa instrução utiliza a cláusula "ALTER TABLE" para alterar a estrutura da tabela "CadastroNumeros", modificando a coluna "numerodocelular" para um tamanho de VARCHAR(9), ou seja, um campo que permita 9 caracteres.

  1. Utilizando Linguagem de Manipulação dos Dados (D.M.L.):

UPDATE CadastroNumeros SET numerodocelular = CONCAT('9', numerodocelular);

Essa instrução utiliza a cláusula "UPDATE" para atualizar os registros da tabela "CadastroNumeros". A cláusula "SET" é usada para definir o novo valor do campo "numerodocelular". Por fim, a função CONCAT é usada para concatenar o dígito 9 no início do número de celular.

Podemos testar se as instruções acima funcionam corretamente utilizando a mesma estrutura de banco de dados e tabela fornecida anteriormente:

  1. Verificar se o tamanho do campo numerodocelular foi alterado para permitir 9 caracteres:

DESCRIBE CadastroNumeros;

O resultado deve mostrar que a coluna "numerodocelular" agora é um campo VARCHAR(9).

  1. Verificar se o nono dígito foi adicionado ao número de celular:

SELECT * FROM CadastroNumeros;

O resultado deve mostrar todos os registros da tabela "CadastroNumeros", com o nono dígito adicionado ao início do número de celular:

Codigo | numerodocelular | nomedoproprietario
-------|----------------|-------------------
1      | 98234567       | João da Silva
2      | 99876543       | Maria dos Santos
3      | 98765432       | José Souza
4      | 97654321       | Ana Oliveira
5      | 96543210       | Pedro Pereira

INSERINDO NÚMERO EM OUTRAS POSIÇÕES


Para adicionar o nono dígito aos números de telefone celular contidos na tabela "CadastroNumeros", podemos utilizar a seguinte sintaxe SQL:

UPDATE CadastroNumeros SET numerodocelular = CONCAT('9', SUBSTRING(numerodocelular, 1, 4), '9', SUBSTRING(numerodocelular, 5, 4));

Essa instrução SQL utiliza a função CONCAT para adicionar o dígito 9 no começo e no meio do número de celular, considerando que o campo "numerodocelular" tem tamanho 8. A função SUBSTRING é utilizada para pegar a parte do número sem o dígito 9 e dividi-lo em duas partes, que serão unidas com o dígito 9 adicionado.

Essa instrução SQL irá atualizar todos os registros da tabela "CadastroNumeros", adicionando o nono dígito aos números de celular na primeira posição e na quinta posição, seguindo a sintaxe:


SUBSTRING(string, start, length)

Parameter Values

string (campo ou texto): Obrigatório. A string a ser extraída Obrigatório.

start (início): Obrigatório. A posição inicial. A primeira posição na string é 1

length (comprimento):O número de caracteres a serem extraídos. Deve ser um número positivo

Lembrando que para executarmos, essa instrução precisaremos aumentaro tamanho do campo "CadastroNumeros" de 8 para 10. Ou retornará erro que o campo é menor que o dado.

SQL
ALTER TABLE CadastroNumeros ALTER COLUMN numerodocelular VARCHAR(10);
0 visualização0 comentário

Comments


Nunca perca um post. Assine agora!

Receba informações sobre os assuntos do conteúdo

© 2023 por Marco A. Beltran. Criado com Wix.com 

  • Ícone do Facebook Cinza
  • Ícone do Linkedin Cinza
bottom of page