Arquivo da tag: 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

Anúncios

1 comentário

Arquivado em Sem categoria

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 – Uso de view (Exemplo)

VIEW é basicamente uma tabela virtual fruto de resultados de uma query (SELECT)

criar a view:


--sintaxe
  CREATE VIEW <nomeView> AS (
	SELECT <coluna_1, coluna_2, coluna_n> 
     FROM <tabela> WHERE <condiçãoDoSeuWhere>
     )

--nosso exemplo:
CREATE VIEW VW_LISTA_ALL_USUARIOS as (
	SELECT LOGIN,SITUACAO_CONTA,DATA_CRIACAO
	 FROM USUARIO
		WHERE SITUACAO is not null
		and SITUACAO in ('ativo','inativo')
)

Obs: na sintaxe, dentro das tags "<" e ">" vc troca para atender o seu caso.

No exemplo acima a view tem um SELECT que traz o login, situacao da conta e data de criação do registro. Uma vantagem no uso de views é que
vc pode ter uma mega query e na sua aplicação vc só chamar a view com where bem sussegado.

Forma de uso:


--Traz os usuários que foram criado nos ultimo mês.
--GETDATE() é uma função do sql server p/ pegar data de hoje
SELECT * FROM VW_LISTA_ALL_USUARIOS AS vw where vw.DATA_CRIACAO > GETDATE()-30

--Traz os usuários com situação de inativo
SELECT * FROM VW_LISTA_ALL_USUARIOS AS vw where vw.SITUACAO  = 'inativo'

Para recriar a view a sintaxe eh:


--sintaxe
REPLACE VIEW <minhaViewMarota> AS (
	SELECT <coluna_1, coluna_2, coluna_n> FROM <tabela> WHERE <condicao>
)

--nosso exemplo:
REPLACE VIEW VW_LISTA_ALL_USUARIOS AS (
	SELECT * FROM USUARIO
)

Para deletar/dropar a view a sintaxe eh:


--sintaxe
DROP VIEW <minhaViewMarota>

--nosso exemplo:
DROP VIEW VW_LISTA_ALL_USUARIOS

Hoje escrevi meio jogo rápido. qqr dúvida ou info pra acrescentar é só comentar.

[]s
Ricardo

2 Comentários

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

Exemplo de uso CASE no MS Sql-Server

Para ilustrar o exemplo, suponha que temos um tabela chamada de grupo de viagem, e nesta temos dois grupos: Viagens Nacionais e Viagens Internacionais.

Agora seu chefe pediu pra vc mostrar isto no relatório apenas o texto “Nacional” para os grupos “Viagens Nacionais”
e “Internacional” para os grupos “Viagens Internacionais”. um replace na sua linguagem de costume já resolve ;-),  mas para ilustrar o uso doCASE” no
Sql-Server faremos da seguinte forma:

select
	g.DESCRICAO as textoOriginal,--o texto sem modificacao
	CASE --texto com tratamento para os casos
      WHEN g.DESCRICAO like '%internacionais'  THEN 'Internacional'
      WHEN g.DESCRICAO like '%nacionais'  THEN 'Nacional'
      else 'Não Encontrado'
	END as textoEnjambrado
	from GRUPO_VIAGEM g

	where g.DESCRICAO in ('Viagens Nacionais', 'Viagens Internacionais')

A instrução WHEN avalia a expressão “g.DESCRICAO like ‘%internacionais‘” no primeiro caso, e sendo satisfeita a condição imprime ‘Internacional‘ no retorno do registro.
Note também que é possível usar ELSE para quando nenhuma das condições anteriores seja satisfeitas.

resultado da query:

	--textoOriginal			|textoEnjambrado
	Viagens Nacionais		 Nacional
	Viagens Internacionais	 Internacional

Referência http://msdn.microsoft.com/pt-br/library/ms181765.aspx

Deixe um comentário

Arquivado em Banco de Dados, SQL

SQL-Server – como localizar/procurar coluna pelo nome em todas as tabelas do banco

SELECT
	T.name AS Tabela,
	C.name AS Coluna
FROM
	sys.sysobjects    AS T (NOLOCK)
INNER JOIN sys.all_columns AS C (NOLOCK) ON T.id = C.object_id AND T.XTYPE = 'U'
WHERE
	C.NAME LIKE '%NomeDoCampo%'
ORDER BY
	T.name ASC

Créditos:  http://social.msdn.microsoft.com/Forums/pt-BR/520/thread/4426106f-a22c-456f-b463-67620bfda1ef/

15 Comentários

Arquivado em SQL

Exemplo de insert massivo

No exemplo o insert massivo é para popular a tabela_2 com dados da tabela_1, note que para funcionar as colunas do select devem coincidir com as colunas do insert.

INSERT INTO TABELA_2
 	   (CHAVE_TABELA_1, VALOR_TABELA_2, NOME_TABELA_2, DT_TABELA_2, DESCRICAO_TABELA_2)
(SELECT CHAVE_TABELA_1, VALOR_TABELA_1, NOME_TABELA_1, DT_TABELA_1, DESCRICAO_TABELA_1
		FROM TABELA_1
	WHERE
		 CHAVE_TABELA_1 = @CHAVE_TABELA_1)

Deixe um comentário

Arquivado em Banco de Dados, SQL

Conexao Ms Sql Server 2000

Exemplo de classe para realizar conexão no Ms SQL Server 2000:

import java.sql.*;

public class ConDBSQL {
 public static void main(String args[]) {
 // Criando as variáveis de conexão e de statement
 Connection con;
 Statement stmt;
 String query = "select name , id from sysobjects";

 // Verificando se o driver JDBC está instalado e pode ser utilizado
 try{
 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
 }
 catch(java.lang.ClassNotFoundException e){
 System.err.print("ClassNotFoundException: ");
 System.err.println(e.getMessage());
 }
 try{
 // Abrindo a conexão com o servidor, login sa e sem senha
 //jdbc:microsoft:sqlserver://server1:1433;User=test;Password=secret
 con = DriverManager.getConnection("jdbc:microsoft:sqlserver://ipOuNomeDoServidor:1433","usuarioBD","senhaBD");

 stmt = con.createStatement();

 // Criando a instrução a partir do SELECT que está dentro da variável query
 ResultSet rs = stmt.executeQuery(query);

 System.out.println("Lista de linhas da tabela sysobjects:");

 // Fazendo um loop para mostrar tudo o que foi retornado do banco
 while (rs.next()){

 // Obtendo o campo name em um string
 String name = rs.getString("name");
 // Obtendo o campo id em um inteiro
 int i = rs.getInt("id");

 System.out.println(name + " " + i);

 }
 //Fechamdno a instrução e a conexão
 stmt.close();
 con.close();
 }
 catch(SQLException ex){
 System.err.println("SQLException: " + ex.getMessage());
 }
 }
}

Obs.  não esqueça de incluir no seu path o jar do sql server.

msutil.jar

mssqlserver.jar

msbase.jar

Deixe um comentário

Arquivado em Banco de Dados, SQL