Mostrando postagens com marcador SQL Server. Mostrar todas as postagens
Mostrando postagens com marcador SQL Server. Mostrar todas as postagens

quarta-feira, 19 de julho de 2023

Aplicando Máscara CNPJ em um campo no SQL Server

 

Muitas vezes os campos como CNPJ e CPF são guardados no banco de dados sem a formatação e pode acontecer de precisarmos pegar eles já formatados.

 

Bom, segue abaixo um exemplo de função que formata no padrão CNPJ, e que também serve de base para formatar um CPF.

 

DECLARE @cnpj CHAR(14) = '3477929600012'; -- Insira o CNPJ aqui

 

SELECT

STUFF(STUFF(STUFF(STUFF(

RIGHT('00000000000000' + @cnpj, 14), -- Completa com zeros à esquerda

3, 0, '.'), 7, 0, '.'), 11, 0, '/'), 16, 0, '-') AS CNPJformatado;

 

Primeiro são acrescentados 14 zeros a esquerda e então a função RIGHT é usada para pegar os últimos 14 dígitos do CNPJ, sendo assim, não importa quantos números faltem, eles serão preenchidos com zeros.

 

A função STUFF é aplicada em posições específicas para inserir os pontos, a barra e o traço usados na formatação do CNPJ.

 

Pra este artigo é só, espero que ajude.

quarta-feira, 24 de maio de 2023

Uso de transações e variáveis em SQL Server, Oracle e PostgreSQL

Neste artigo vou mostrar o uso de transação e de declaração de variável nos Bancos de Dados mais utilizados: SQL Server, Oracle e PostgreSQL.

 

As vezes você pode por exemplo usar um SELECT pra retornar um ID e guardar ele em uma variável para depois fazer várias ações com ele, e essas ações precisam ser feitas por completo ou então você precisa desfazer o que foi executado parcialmente. Nos exemplos a seguir, o trecho que executa o DELETE serve como exemplo para aonde as ações seriam colocadas.

 

Segue o exemplo para SQL Server:

 

BEGIN TRANSACTION;

      DECLARE @nomeVariavel tipoVariavel; (alguns tipos como CHAR e VARCHAR precisam do tamanho entre parenteses junto ao tipo : varchar(30))


      SELECT @nomeVariavel = coluna

      FROM tabela WHERE condição;


      DELETE FROM tabela

      WHERE coluna = @nomeVariavel;

 

IF @@ERROR <> 0

      BEGIN

      ROLLBACK TRANSACTION;

      END

ELSE

      BEGIN

            COMMIT TRANSACTION;

      END

 

Segue o exemplo para Oracle:

 

DECLARE nome_da_variavel datatype;

BEGIN

nome_da_variavel := valor;

 

DELETE FROM tabela WHERE coluna = nome_da_variavel;

              

BEGIN

                

EXCEPTION WHEN others THEN

                 ROLLBACK;

                 RAISE;

              

END;

COMMIT;

END;

 

E por fim, segue o exemplo para PostgreSQL:

 

BEGIN;

DECLARE nome_da_variavel datatype;

nome_da_variavel := valor;

 

DELETE FROM tabela WHERE coluna = nome_da_variavel;

 

BEGIN

    EXCEPTION WHEN others THEN

        ROLLBACK;

        RAISE;

END;

COMMIT;

 

Pra esse artigo é isso, espero que ajude.

quarta-feira, 26 de abril de 2023

Usar número da linha como ID em um SELECT no SQL Server

         Nesse artigo vou mostrar 2 maneiras de como usar o número da linha como ID trazendo ele na consulta. Isso é util quando queremos por exemplo usar um DTO (ou VO) em uma consulta com JPA mas na consulta não tem campos que são sempre únicos para servir de ID para o DTO e o JPA precisa de um ID único.

   A primeira usamos o ROW_NUMBER e a segunda criamos uma SEQUENCE. Em "MEU_SELECT_COM_JOINS" você substitui por toda sua consulta que carrega os dados que você precisa para o DTO e pronto.


--------------------------------------------------
-- row_number(): SQL2005+
--------------------------------------------------
select
    row_number() over (order by (select null)) id,
    tabela_.*

from (MEU_SELECT_COM_JOINS) as tabela_
 
 
--------------------------------------------------
-- Sequence: SQL2012+
--------------------------------------------------
-- Criando sequencia
if object_id('sLinhas') is not null drop sequence sLinhas
create sequence sLinhas as int start with 1
 
select
    next value for sLinhas as id,
    tabela_.*

from (MEU_SELECT_COM_JOINS) as tabela_