Separar texto com ‘;’ em ‘n’ colunas

E aí pessoal, tudo belezinha com vocês? Segue um post rápido, só para registrar um assunto que rolou em um grupo de discussão do Telegram há algum tempo atrás e só agora eu resolvi parar para escrever a respeito… Pense no seguinte cenário: Eu tenho uma tabela onde uma das colunas é um campo texto (varchar(XXX)), separado por ‘;’ (ou qualquer outro caractere de sua preferência). Mas porque eu teria isso? Bom, imagine que você crie uma trigger para a fazer sua auditoria e, ao invés de guardar em colunas, você guarda em um varchar as alterações… ...

12 nov. 2019 · 2 minutos · 291 palavras · Logan D. Merazzi

Divisão de decimal com inteiro, como ficam as casas decimais?

Surgiu a seguinte dúvida no trabalho esse dias que foi mais ou menos assim: Tenho duas colunas e estou realizando uma divisão entre elas. Qual vai ser o tipo retornado? O SQL Server segue a ordem de precedência do tipo do dado? De bate pronto, a resposta é um “Sim, ele sempre vai seguir a ordem de precedência e vai retornar o tipo de dado que você está usando que possui maior precedência.” Porém (sempre tem um porém), isso não é valido para os tipos decimais. ...

03 ago. 2017 · 3 minutos · 543 palavras · Logan D. Merazzi

Tratamento de Exceções. Parte 2

Essa é a parte 2 de uma série de 3 posts (ou 4, quem sabe), onde eu quero falar sobre as formas de realizar o tratamento de exceções no SQL Server. Se você caiu aqui por acaso, sugiro antes dar uma olhada na parte 1 da série, onde eu trato de alguns detalhes no que diz respeito à forma que o SQL Server realiza o encerramento de processos, nos casos de erro. Hoje irei falar sobre como realizar o tratamento de exceções, via TRY / CATCH. ...

10 nov. 2015 · 4 minutos · 798 palavras · Logan D. Merazzi

Introdução ao tratamento de Exceções

O seu código vai dar erro. Isso é um fato. Mesmo que seja a pessoa mais cuidadosa do mundo, você tem que preparar o seu código para o pior: O bug! Até porque no momento que os erros aparecerem, você vai precisar verificar o que está ocorrendo e ajustar da forma mais rápida possível. E tem outra: Ninguém gosta de rodar uma aplicação e dar de cara com uma tela exibindo o stack do erro. E para isso, você deve tratar as exceções que o teu código pode gerar. Mas antes de entrar no assunto de tratamento de erros, primeiramente, gostaria de alinhar algumas ideias… Esse será o primeiro de uma série de 2 ou 3 posts, veremos como ficará o próximo, pois este já ficou consideravelmente grande. ...

03 nov. 2015 · 5 minutos · 915 palavras · Logan D. Merazzi

Alterando o schema de objetos em lote

Não vou entrar aqui no mérito do que são os schemas e como especificamos (deixemos isso para um outro momento). Quero apenas deixar o seguinte cenário: Um usuário criou uma série de scripts e, ao aplicá-lo no banco, todos os objetos ficaram com o nome do usuário no schema: usuário.procedure, usuario.function, usuario.table Como ajustar isso, sem que seja necessário abrir cada objeto individualmente e colocar no schema correto (vamos usar o schema dbo aqui, para simplificar as coisas)? ...

28 out. 2015 · 2 minutos · 282 palavras · Logan D. Merazzi

Usando o Some | Any | All

Olhando os operadores lógicos do SQL Server (link), me deparei com algo curioso, que até então não tinha visto: os operadores Some, Any e All que, vejam só, está disponível desde do SQL Server 2008. #facepalm O objetivo deles: Comparar um valor escalar (lembrem-se disso) com os valores de um dataset (a.k.a. subquery). O ALL validará se TODOS os valores do dataset correspondem ao valor comparado. O SOME e o ANY são equivalentes, eles retornaram TRUE se algum dos valores do dataset corresponder à comparação. Se você ouviu um IN na explicação, pense nele como um IN com esteroides para um valor escalar, uma vez que você pode validar com os operadores =, <, >, <>, etc. ...

10 jul. 2015 · 2 minutos · 388 palavras · Logan D. Merazzi

Escapando caracteres usando o ESCAPE

Pessoal, aproveitando para tirar um pouco a poeira, uma dica rápida que surgiu no trabalho hoje… Como sabemos (sabemos, né?), temos alguns caracteres que são chamados de coringas, para facilitar a busca por um padrão. Não vou explicar aqui o que cada um faz, mas eles são: %, _ , [], [^] O problema: Quero pesquisar na minha tabela por todas as linhas que comecem com [OK]. Porém, se eu fizer um simples WHERE Coluna like ‘[OK]%’ (um exemplo esdrúxulo, mas que mantém o fluxo do raciocínio), a consulta vai me retornar todas as linhas que comecem com O ou com K e o que houver mais nesse registro, o que não é bem o que queremos. ...

07 jul. 2015 · 1 minuto · 202 palavras · Logan D. Merazzi

Gerando scripts DDL no Visual Studio 2013

_Eu ainda sou adepto da criação dos scripts pelo editor, principalmente pelo fato que “de vez em quando” o SSMS resolve dropar toda a tabela e criar uma nova estrutura, só porque você resolveu mudar uma coluna que é not null para null (por exemplo). _ Mas segue uma dica para quem curte usar o modo design no SSMS e, por algum motivo qualquer, precisou usar o Visual Studio para realizar alguma manutenção no banco e não achou como gerar os scripts de forma fácil… ...

15 abr. 2015 · 2 minutos · 271 palavras · Logan D. Merazzi

Dicionário de Dados – A Exclusão.

Um dos meus papéis dentro da empresa onde trabalho é o de ser chato e verificar os scripts que são enviados antes de entrar em produção. Uma parte das verificações é garantir que o dicionário de dados esteja o mais atualizado possível para que consigamos entender o objetivos das tabelas, colunas, constraints, etc. Para inserir uma propriedade em um objeto, deve ser utilizada a procedure sp_addextendedproperty. Para remover: sp_dropextendedproperty. E para atualizar: sp_updateextendedproperty. Não vou entrar no mérito de como usar, pois o BOL (Books On Line – RTFM!) explica bem como usar e os parâmetros necessários. ...

19 mar. 2015 · 4 minutos · 843 palavras · Logan D. Merazzi

Qual o percentual de andamento do meu Backup / Restore?

Quando você executa um Backup / Restore pelo SSMS, você tem facilmente o percentual de andamento indo na aba “Messages”. E quando você executa, por exemplo, via powershell e ele fica lá travado no processo e não te informa nada? Nesses casos, você pode rodar a consulta abaixo: SELECT start_time, percent_complete, session_id, status, command FROM sys.dm_exec_requests WHERE command In ( 'RESTORE DATABASE', 'BACKUP DATABASE' ) Com isso, você saberá o percentual de execução do teu backup: ...

10 jun. 2014 · 1 minuto · 77 palavras · Logan D. Merazzi