SQL Snippets

    ”Snippets” são pequenos trechos de código reutilizável que é sempre bom termos à mão, em caso de esquecimento! Eles normalmente resolvem um problema bem específico – acertam “na mosca”.
    Listo abaixo então alguns snippets de Sql – todos utilizados no SqlServer, por ser o banco
que mais tenho usado atualmente:


Formatar data (dd/mm/aaaa):

SELECT CONVERT(CHAR, GETDATE(), 103)

Mudar o dia de uma data (ex.: dia 10):

UPDATE tabela SET DATAATUALIZACAO = DATEADD(D, 10-DATEPART(DAY, campo_data), campo_data)

Truncar uma data (remover o horário):

SELECT DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0)

OU

SELECT CAST(FLOOR(CAST(campo_data AS DECIMAL(12, 5))) AS DATETIME) FROM tabela


Ano é bissexto?

SELECT
CASE DATEPART(d, DATEADD(d, 1, (CAST((CONVERT(VARCHAR(4), @ano) + '0228') AS DATETIME))))
  WHEN 29 THEN 1
  ELSE 0
END

Concatenar linhas de um campo (exibir s/ quebras de linha):

SELECT REPLACE(campo, CHAR(13), ' ') FROM tabela


Remover quebras de linha de um campo:

UPDATE tabela SET campo = REPLACE(campo, CHAR(13), ' ') FROM tabela


Encontrar registros duplicados:

SELECT campo, COUNT(*) Qtde FROM tabela GROUP BY campo HAVING COUNT(*) > 1

OU

SELECT campo_comparar, campo_id FROM tabela WHERE campo_comparar IN
(
  SELECT campo_comparar FROM tabela GROUP BY campo_comparar HAVING COUNT(*) > 1
)
ORDER BY campo_comparar

Excluir registros duplicados:

DELETE X
FROM
(
  SELECT ROW_NUMBER() OVER(PARTITION BY campo_comparar ORDER BY campo_id) AS SEQ FROM tabela
) X
WHERE SEQ > 1

Fazer backup:

BACKUP DATABASE NOME_BANCO_DADOS TO DISK = caminho WITH CHECKSUM, DESCRIPTION = description

Verificar se uma tabela existe:

IF EXISTS (SELECT 1 FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[tabela]') AND TYPE IN (N'U'))
  PRINT 'Ufa, a tabela existe!'
ELSE
  PRINT 'Ops...'

Obtendo informações sobre uma tabela:

SELECT
   ORDINAL_POSITION
  ,COLUMN_NAME
  ,DATA_TYPE
  ,CHARACTER_MAXIMUM_LENGTH
  ,IS_NULLABLE
  ,COLUMN_DEFAULT
FROM
  INFORMATION_SCHEMA.COLUMNS
WHERE
  TABLE_NAME = 'tabela'
ORDER BY
  ORDINAL_POSITION ASC;


Você sabia:
Que a luz do sol leva aproximadamente 8 minutos para chegar à terra?

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.