Arquivo da tag: SQL Server

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

Anúncios

1 comentário

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

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), '')

1 comentário

Arquivado em Banco de Dados, SQL

SQL SERVER: desabilitar e habilitar campo IDENTITY

É comum fazer aquela migração marota de registros entre bases, ai surge a necessidade de migrar tabelas com identity (auto incremento) com a mesma estrutura de Id´s.
O Sql Server permite desligar e ligar o campo identity numa boa 🙂

Exemplo:

--DESATIVAR IDENTITY TABELA
SET IDENTITY_INSERT SUA_TABELA ON
--INSERE SEU ID PSICODÉLICO
insert into SUA_TABELA(ID, CONTEUDO) VALUES (666, 'APOCALIPSE')
insert into SUA_TABELA(ID, CONTEUDO) VALUES (171, 'RÁÁÁÁ, PEGADINHA DO MALANDRO!!! GLU GLU YEAH YEAH')
--ATIVAR IDENTITY TABELA
SET IDENTITY_INSERT SUA_TABELA OFF

Bom é isto.
flw

5 Comentários

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