SQL Server – Como resetar sequence no banco

–Retorna qual é o maior id na tabela

SELECT max(id_veiculo) FROM cad_veiculo

–Retorna qual é a ultima sequence gerada na tabela, neste exemplo tabela cad_veiculo

select ident_current('cad_veiculo')

–Defina a sequence para a sequencia + 1 ( veja retorno do max retornado acima)

DBCC CHECKIDENT (cad_veiculo, RESEED, 3551476)

Deixe um comentário

Arquivado em Banco de Dados, SGBD Sql-Server, SQL

SQL – Exemplo de como extrair nome, ultimo sobrenome e sobrenome completo

Exemplo de como extrair nome, ultimo sobrenome e sobrenome completo.

select
 nome_pessoa AS NOME_COMPLETO,
 CASE 
	WHEN CHARINDEX(' ',LTRIM(RTRIM(nome_pessoa))) > 0  THEN LEFT(nome_pessoa, CHARINDEX(' ',LTRIM(RTRIM(nome_pessoa)))-1) 
	ELSE nome_pessoa 
END AS 'NOME',
CASE 
	WHEN CHARINDEX(' ',REVERSE(LTRIM(RTRIM(nome_pessoa)))) > 0 THEN RIGHT(nome_pessoa, CHARINDEX(' ',REVERSE(LTRIM(RTRIM(nome_pessoa))))-1)
	ELSE '' 
END AS 'ULTIMO_SOBRENOME',
CASE 	
	WHEN CHARINDEX(' ',LTRIM(RTRIM(nome_pessoa))) > 0  THEN 	
		LTRIM(RTRIM(SUBSTRING(nome_pessoa, CHARINDEX(' ',LTRIM(RTRIM(nome_pessoa))), (LEN(LTRIM(RTRIM(nome_pessoa)))+1 - CHARINDEX(' ',LTRIM(RTRIM(nome_pessoa))) )) ))
	ELSE '' 
END AS 'SOBRENOME_COMPLETO'

FROM TB_PESSOA

Saída de exemplo:

resultado_2016-09-28_171058

6 Comentários

Arquivado em Sem categoria

SQL Server: Como visualizar conteúdo de triggers, procedures, views, funções, etc sem sp_helptext

No Sql server a procedure de sistema sp_helptext traz o conteúdo de triggers, procedures, views, funções, etc.

Uma alternativa ao uso do sp_helptext é a query abaixo:

	select definition 
	from sys.sql_modules
	where object_name(object_id) in ('VW_RELATORIO_A', 'VW_RELATORIO_B', 'SP_ATUALIZA_XX')

A vantagem no uso da query é que você pode usar IN e pesquisar vários object´s e por exemplo concatenar o comando GO para separar uma instrução da outra.

[]s

Deixe um comentário

Arquivado em Banco de Dados, SGBD Sql-Server, SQL

SQL Server – Função que limpa caracteres em HTML, CSS e ASCII do campo que desejar, no SQL

SQL Server – Função que limpa caracteres em HTML, CSS e ASCII do campo que desejar, no SQL. Contribuição/Créditos ao Andros Albert Cavalin

CREATE FUNCTION [dbo].[fncRemove_HTML] (@HTMLText VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
 
    DECLARE	@Start INT
    DECLARE	@End INT
    DECLARE	@Length INT
 
    -- Substitui a entidade HTML "&" pelo caracter ''
    SET @Start = CHARINDEX('&', @HTMLText)
    SET @End = @Start + 4
    SET @Length = (@End - @Start) + 1
 
    WHILE (@Start > 0 AND @End > 0 AND @Length > 0)
    BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, '')
        SET @Start = CHARINDEX('&', @HTMLText)
        SET @End = @Start + 4
        SET @Length = (@End - @Start) + 1
    END
 
    -- Substitui a entidade HTML "<" pelo caracter '<'
    SET @Start = CHARINDEX('<', @HTMLText) SET @End = @Start + 3 SET @Length = (@End - @Start) + 1 WHILE (@Start > 0 AND @End > 0 AND @Length > 0) 
    BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, '<')
        SET @Start = CHARINDEX('<', @HTMLText) SET @End = @Start + 3 SET @Length = (@End - @Start) + 1 END -- Substitui a entidade HTML ">" pelo caracter '>'
    SET @Start = CHARINDEX('>', @HTMLText)
    SET @End = @Start + 3
    SET @Length = (@End - @Start) + 1
 
    WHILE (@Start > 0 AND @End > 0 AND @Length > 0)
    BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, '>')
        SET @Start = CHARINDEX('>', @HTMLText)
        SET @End = @Start + 3
        SET @Length = (@End - @Start) + 1
    END
 
    -- Substitui a entidade HTML "&&" pelo caracter ''
    SET @Start = CHARINDEX('&amp;', @HTMLText)
    SET @End = @Start + 4
    SET @Length = (@End - @Start) + 1
 
    WHILE (@Start > 0 AND @End > 0 AND @Length > 0)
    BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, '')
        SET @Start = CHARINDEX('&amp;', @HTMLText)
        SET @End = @Start + 4
        SET @Length = (@End - @Start) + 1
    END
 
    -- Substitui a entidade HTML " " pelo caracter ' '
    SET @Start = CHARINDEX(' ', @HTMLText)
    SET @End = @Start + 5
    SET @Length = (@End - @Start) + 1
 
    WHILE (@Start > 0 AND @End > 0 AND @Length > 0)
    BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, ' ')
        SET @Start = CHARINDEX(' ', @HTMLText)
        SET @End = @Start + 5
        SET @Length = (@End - @Start) + 1
    END
 
    -- Substitui a tag por ''
    SET @Start = CHARINDEX('
', @HTMLText)
    SET @End = @Start + 3
    SET @Length = (@End - @Start) + 1
 
    WHILE (@Start > 0 AND @End > 0 AND @Length > 0)
    BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, '')
        SET @Start = CHARINDEX('
', @HTMLText)
        SET @End = @Start + 3
        SET @Length = (@End - @Start) + 1
    END
 
 
    -- Substitui a tag por '')
    SET @Start = CHARINDEX('
', @HTMLText)
    SET @End = @Start + 4
    SET @Length = (@End - @Start) + 1
 
    WHILE (@Start > 0 AND @End > 0 AND @Length > 0)
    BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, '')
        SET @Start = CHARINDEX('
', @HTMLText)
        SET @End = @Start + 4
        SET @Length = (@End - @Start) + 1
    END
 
    -- Substitui a tag 
 por ''
    SET @Start = CHARINDEX('
', @HTMLText)
    SET @End = @Start + 5
    SET @Length = (@End - @Start) + 1
 
    WHILE (@Start > 0 AND @End > 0 AND @Length > 0)
    BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, '')
        SET @Start = CHARINDEX('
', @HTMLText)
        SET @End = @Start + 5
        SET @Length = (@End - @Start) + 1
    END
 
 
    -- Remove os parâmetros contidos nas tags HTML
    SET @Start = CHARINDEX('<', @HTMLText) SET @End = CHARINDEX('>', @HTMLText, CHARINDEX('<', @HTMLText)) SET @Length = (@End - @Start) + 1 WHILE (@Start > 0 AND @End > 0 AND @Length > 0)
    BEGIN
        SET @HTMLText = STUFF(@HTMLText, @Start, @Length, '')
        SET @Start = CHARINDEX('<', @HTMLText) SET @End = CHARINDEX('>', @HTMLText, CHARINDEX('<', @HTMLText))
        SET @Length = (@End - @Start) + 1
    END

    
    SET @HTMLText = REPLACE(@HTMLText,'º','') -- º = ""
    SET @HTMLText = REPLACE(@HTMLText,''','') -- ' = ""
    SET @HTMLText = REPLACE(@HTMLText,'”','') -- ” = ""
    SET @HTMLText = REPLACE(@HTMLText,'"','') -- " = ""
    SET @HTMLText = REPLACE(@HTMLText,'–','') -- – = ""
    SET @HTMLText = REPLACE(@HTMLText,'§','') -- § = ""
    SET @HTMLText = REPLACE(@HTMLText,'·','') -- · = ""
    SET @HTMLText = REPLACE(@HTMLText,'“','') -- “ = ""
    
    SET @HTMLText = REPLACE(@HTMLText,'á','á') -- á = "á"
    SET @HTMLText = REPLACE(@HTMLText,'ã','ã') -- ã = "ã"
    SET @HTMLText = REPLACE(@HTMLText,'â','â') -- â = "â"
    SET @HTMLText = REPLACE(@HTMLText,'à','à') -- à = "à"
    SET @HTMLText = REPLACE(@HTMLText,'é','é') -- é = "é"
    SET @HTMLText = REPLACE(@HTMLText,'ê','ê') -- ê = "ê"
    SET @HTMLText = REPLACE(@HTMLText,'í','í') -- í = "í"
    SET @HTMLText = REPLACE(@HTMLText,'ó','ó') -- ó = "ó"
    SET @HTMLText = REPLACE(@HTMLText,'õ','õ') -- õ = "õ"
    SET @HTMLText = REPLACE(@HTMLText,'ô','ô') -- ô = "ô"
    SET @HTMLText = REPLACE(@HTMLText,'ú','ú') -- ú = "ú"
    SET @HTMLText = REPLACE(@HTMLText,'ç','ç') -- ç = "ç"
       
    RETURN LTRIM(RTRIM(@HTMLText))
END

Forma de uso:

SELECT [dbo].[fncRemove_HTML](campo_com_tags_html) as campo_sem_html FROM sua_tabela

Deixe um comentário

Arquivado em SGBD Sql-Server, SQL

Como pegar o IP do SQL Server Servidor ou Cliente

Como pegar o IP do SQL Server Servidor ou Cliente, simples:

–IP da máquina (cliente)

SELECT CONNECTIONPROPERTY('client_net_address') AS [IP da máquina (cliente)]

–IP da máquina (servidor)

SELECT CONNECTIONPROPERTY('local_net_address') AS [IP da máquina (servidor)]

–Nome da máquina (servidor)

SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS') [Nome da máquina (servidor)]

–Instância (servidor)

SELECT SERVERPROPERTY('InstanceName') AS [Instância (servidor)]

Veja os resultados:
exemplo_2015-10-09_082512

Referências:

CONNECTIONPROPERTY (Transact-SQL) – https://technet.microsoft.com/pt-br/library/bb895240(v=sql.110).aspx
SERVERPROPERTY (Transact-SQL) – https://msdn.microsoft.com/pt-br/library/ms174396(v=sql.120).aspx

[]’s

Deixe um comentário

Arquivado em Banco de Dados, SQL

Como fazer download de arquivo via PowerShell v.5

Segue um exemplo simples de como fazer download de arquivo via PowerShell v.5

powershell_2015-10-06_210505

O comando basicamente baixa o arquivo da url (http://rhccucc.org/media/LonesomeValley.mp3) e disponibiliza na pasta (C:\tmp\)

import-module bitstransfer
Start-BitsTransfer http://rhccucc.org/media/LonesomeValley.mp3 C:\tmp\LonesomeValley.mp3

[ ]´s

Deixe um comentário

Arquivado em Windows

Como copiar os dados de uma tabela sem precisar criar nova tabela via “create table” apenas com select e insert

Segue uma forma simples e prática via sql de copiar os dados de uma tabela sem precisar criar nova tabela via “create table” apenas com select e insert

select * into TABELA_BACKUP from TABELA_A_SER_COPIADA

O resultado será uma tabela clonada com os dados da tabela original

OBS. apesar da cópia da estrutura da tabela, coisas do tipo identity, sequence, trigger precisa ser re-criados na nova tabela.

É suportado pelo SQL Server desde a versão 2005 https://msdn.microsoft.com/en-us/library/ms188029(SQL.90).aspx

1 comentário

Arquivado em Banco de dados, SGBD Sql-Server, SQL

SQLServer – função para converter string hexadecimal padrão UTF8 para Unicode legível

Certa vez recebemos um demanda para analisar uns dados exportados do AD da empresa (csv) e percebemos que todos os atributos com acentuação exportados estava em hexadecimal padrão UTF8 e precisávamos decodificar o hexadecimal para o padrão Unicode em uma string legível. Por exemplo, coisas do tipo “X’43414d504f204d4f5552c3834f’” passariam a significam “CAMPO MOURÃO”.

A tabela de conversão que ajudou bastante nas conversões foi http://www.utf8-chartable.de/

Depois de queimar um pouco de fosfato para entender o padrões de conversão de um lado para o outro bolamos seguinte a function o SQLServer para resolver o problema:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fn_hexutf8_to_unicode](@valorIN VARCHAR(3000))
RETURNS VARCHAR(3000)
AS

BEGIN

DECLARE @retorno VARCHAR(3000);
DECLARE @valor VARCHAR(3000);
DECLARE @utf varchar(20);
DECLARE @unicode varchar(20);

SET @valor = replace(replace(@valorIN, 'X''', '0x'), '''', '');
SET @valor = REPLACE(@valor, 'c383', '#');
SET @valor = REPLACE(@valor, 'e28093', '96');
SET @valor = REPLACE(@valor, 'c2ba', 'ba');


WHILE CHARINDEX('c3', @valor)<>0
BEGIN
	set @utf = SUBSTRING(@valor, CHARINDEX('c3', @valor), 4);
	set @unicode = RIGHT(CONVERT(varchar(max),CONVERT(VARBINARY(MAX),CONVERT(VARBINARY(MAX), '0x'+RIGHT(@utf, 2), 1)+64,1),1), 2);
	SET @valor = REPLACE(@valor, @utf, @unicode);
END
SET @valor = REPLACE(@valor, '#', 'c3');
SET @valor = CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), @valor, 1));

SET @retorno = @valor;


RETURN @retorno;
END;

Forma de uso:

select dbo.fn_hexutf8_to_unicode('X''43414d504f204d4f5552c3834f')

Espero que tenha sido útil, pois passamos um dia emocionante pra chegar neste resultado rs.

Deixe um comentário

Arquivado em SGBD Sql-Server, SQL

Sql server – Exemplo de como gerar hash (MD5) a partir de uma string

Segue exemplo para gerar hash a partir de uma string:

--Gerando código Hash no SQL Server
select RIGHT(sys.fn_sqlvarbasetostr(HASHBYTES('MD5','texto p/ codificar no hash')),32)

--resultado gerado baseado na string informada "texto p/ codificar no hash"
d5cd8ad81ab36d83247467e9432c231a

Lembrando que o hash é uma mão de via única, ou seja, vc gera um código hash a partir de uma string e não consegue fazer o caminho inverso

[]s
Ricardo

3 Comentários

Arquivado em MD5, SQL

SQL Server – Remover “ENTER” no retorno da consulta SQL

Simples exemplo de como remover “nova linha” do retorno da consulta SQL. Isto evita loucuras em relatórios e exportações pra planilhas, etc 🙂

SELECT REPLACE(REPLACE(COLUNA_TABELA, CHAR(13), ''), CHAR(10), '')

5 Comentários

Arquivado em Banco de Dados, SQL