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

Anúncios

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

Clonar objetos no Java

No Java o método clone() provê a criação de uma cópia similar ao objeto original. Em outras palavras o método copia campo a campo da classe clonada.
Para tornar uma classe clonável no Java são necessárias duas ações: implementar a interface “Cloneable” e sobrescrever o método clone(). É preciso ter em mente que ao clonar uma instância de uma classe os atributos primitivos (int, float, double, char, byte, etc…) são uma nova cópia do objeto original, já o atributo tipado (objeto de classe) acoplado terá por padrão copia da referencia original, ou seja, se mudamos o valor no atributo do objeto acoplado, todos que enxergam a mesma referencia serão afetado com a alteração.
Vamos ao primeiro exemplo de clonagem simples demonstrando a questão do atributo referenciado:
Classe Main

package mydelirium;
/**
 *
 * @author Ricardo Spinoza
 */
public class MyDelirium {

    /**
     * @param args the command line arguments
     * @throws java.lang.CloneNotSupportedException
     */
    public static void main(String[] args) throws CloneNotSupportedException{
        
        Dog dogOriginal = new Dog();        
        dogOriginal.setName("Ted");
        dogOriginal.setRace("Pitbull");
        
        Person personOriginal = new Person();
        personOriginal.setAge(24);
        personOriginal.setName("Jonnhy");
        personOriginal.setDogFriend(dogOriginal);
        
        Person personClone = (Person) personOriginal.clone();        
        
        System.out.println("original >> name: " + personOriginal.getName() + " age:" +personOriginal.getAge()+ " dog name:" + personOriginal.getDogFriend().getName()+ " dog race:" + personOriginal.getDogFriend().getRace());
        System.out.println("cloned >>>> name: " + personClone.getName() + " age:" +personClone.getAge()+ " dog name:" + personClone.getDogFriend().getName()+ " dog race:" + personClone.getDogFriend().getRace());
        //System.out.println("orginal equals cloned: " + personOriginal.equals(personClone));
        
        System.out.println("Dog é uma referencia comum entre os dois objetos (original e clonado)? "
                + personOriginal.getDogFriend().equals(personClone.getDogFriend()));
        
        System.out.println();
        
        personOriginal.getDogFriend().setName("Xena");
        personOriginal.getDogFriend().setRace("Yourshire Terrier");
        personOriginal.setAge(33);
        
        System.out.println("Ou seja, ao mudar o objeto Dog teremos: \n");
        
        System.out.println("original >> name: " + personOriginal.getName() + " age:" +personOriginal.getAge()+ " dog name:" + personOriginal.getDogFriend().getName()+ " dog race:" + personOriginal.getDogFriend().getRace());
        System.out.println("cloned >>>> name: " + personClone.getName() + " age:" +personClone.getAge()+ " dog name:" + personClone.getDogFriend().getName()+ " dog race:" + personClone.getDogFriend().getRace());                
    } 
}

Classe Person

package mydelirium;

/**
 *
 * @author Ricardo.Pereira
 */
public class Person implements Cloneable{
    
    private int age;    
    private String name;
    
    private Dog dogFriend;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Dog getDogFriend() {
        return dogFriend;
    }

    public void setDogFriend(Dog dogFriend) {
        this.dogFriend = dogFriend;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone(); 
    }
    
}

Classe Dog

package mydelirium;

/**
 *
 * @author Ricardo.Pereira
 */
public class Dog{
 
    private String name;
    private String race;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRace() {
        return race;
    }

    public void setRace(String race) {
        this.race = race;
    }
}

A saída do código será:

<pre>original >> name: Jonnhy age:24 dog name:Ted dog race:Pitbull
cloned >>>> name: Jonnhy age:24 dog name:Ted dog race:Pitbull
Dog é uma referencia comum entre os dois objetos (original e clonado)? true
Ou seja, ao mudar o objeto Dog teremos: 
original >> name: Jonnhy age:33 dog name:Xena dog race:Yourshire Terrier
cloned >>>> name: Jonnhy age:24 dog name:Xena dog race:Yourshire Terrier

No exemplo clonamos o objeto original que possui o atributo dogFriend (da classe Dog) o qual possui a mesma referencia nos objetos personOriginal e personClone. Observe que qualquer mudança de valor no atributo dogFriend o objeto original e clonado são afetados.
Para resolver o problema da referencia neste cenário precisaremos adicionar o método clone() na nossa classe Dog (obviamente implementar a interface Clonable) e alterar o método clone() definido na nossa classe Person para clonar o objeto Dog e assim isolar as referências de cada objeto.
Segue as mudanças no segundo exemplo:
Classe Main

package mydelirium;
/**
 *
 * @author Ricardo Spinoza
 */
public class MyDelirium {

    /**
     * @param args the command line arguments
     * @throws java.lang.CloneNotSupportedException
     */
    public static void main(String[] args) throws CloneNotSupportedException{
        
        Dog dogOriginal = new Dog();        
        dogOriginal.setName("Ted");
        dogOriginal.setRace("Pitbull");
        
        Person personOriginal = new Person();
        personOriginal.setAge(24);
        personOriginal.setName("Jonnhy");
        personOriginal.setDogFriend(dogOriginal);        
        Person personClone = (Person) personOriginal.clone();                
        System.out.println("original >> name: " + personOriginal.getName() + " age:" +personOriginal.getAge()+ " dog name:" + personOriginal.getDogFriend().getName()+ " dog race:" + personOriginal.getDogFriend().getRace());
        System.out.println("cloned >>>> name: " + personClone.getName() + " age:" +personClone.getAge()+ " dog name:" + personClone.getDogFriend().getName()+ " dog race:" + personClone.getDogFriend().getRace());        
        System.out.println("Dog é uma referencia comum entre os dois objetos (original e clonado)? "
                + personOriginal.getDogFriend().equals(personClone.getDogFriend()));
        
        System.out.println();
        
        personOriginal.getDogFriend().setName("Xena");
        personOriginal.getDogFriend().setRace("Yourshire Terrier");
        personOriginal.setAge(33);
        
        System.out.println("Ao mudar o objeto Dog no objeto original teremos: \n");
        
        System.out.println("original >> name: " + personOriginal.getName() + " age:" +personOriginal.getAge()+ " dog name:" + personOriginal.getDogFriend().getName()+ " dog race:" + personOriginal.getDogFriend().getRace());
        System.out.println("cloned >>>> name: " + personClone.getName() + " age:" +personClone.getAge()+ " dog name:" + personClone.getDogFriend().getName()+ " dog race:" + personClone.getDogFriend().getRace());
                
    }
    
}

Classe Person

package mydelirium;

/**
 *
 * @author Ricardo.Pereira
 */
public class Person implements Cloneable{
    
    private int age;    
    private String name;
    
    private Dog dogFriend;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Dog getDogFriend() {
        return dogFriend;
    }

    public void setDogFriend(Dog dogFriend) {
        this.dogFriend = dogFriend;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        Person cloned = (Person)super.clone();
        //faz o clone do objeto dogFriend
        cloned.setDogFriend((Dog)cloned.getDogFriend().clone());
        return cloned;
    }
    
}

Classe Dog

package mydelirium;

/**
 *
 * @author Ricardo.Pereira
 */
public class Dog implements Cloneable{
 
    private String name;
    private String race;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRace() {
        return race;
    }

    public void setRace(String race) {
        this.race = race;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

A saída do código será:

original >> name: Jonnhy age:24 dog name:Ted dog race:Pitbull
cloned >>>> name: Jonnhy age:24 dog name:Ted dog race:Pitbull
Dog é uma referencia comum entre os dois objetos (original e clonado)? false

Ao mudar o objeto Dog no objeto original teremos: 

original >> name: Jonnhy age:33 dog name:Xena dog race:Yourshire Terrier
cloned >>>> name: Jonnhy age:24 dog name:Ted dog race:Pitbull

Por fim, a clonagem de objetos facilita criar cópias de objeto, porém é preciso ter alguns cuidados com relação a referencia de objetos tipados entre o objeto original e o clonado.

Dúvidas, criticas, sugestões, por favor escreva 🙂
Referencia:

API Java Object clone() http://http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#clone()
Leia mais em A guide to object cloning in java <http://howtodoinjava.com/2012/11/08/a-guide-to-object-cloning-in-java/&gt;

Deixe um comentário

Arquivado em Java

Netbeans – modificando o template default

A criação de novas classes no Netbeans é baseada em templates e tals. O tosco do template é um comentário maroto cheio de bla bla bla antes do package da classe – a idéia aqui é remover isto das suas futuras classes geradas via template e de lambuja customizar o usuário e jogar uma data de criação automática.
No Netbeans 1_menu_2013-07-01_223952
Clique em definições:
2_menu_2013-07-01_223952
Vai abrir o template conforme segue:
3_comment_2013-07-01_224703

Deste jeito sempre que vc gera uma nova classe o resultado será algo do tipo:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.model;

/**
 *
 * @author Ricardo
 */
public class Teste {
    
}

Note que no template padrão o Netbeans joga um comentário no começo do pacote da classe e logo abaixo um comentário com user setado na variável de ambiente do seu sistema operacional.
Continuando…
Após clicar no botão “Definições” abrirá o arquivo User.properties com o conteúdo listado abaixo:

#
# Here, or in other properties files in this directory, you can define
# various properties that you want to make available to the template
# processor while creating various templates.
#

# uncomment the next line and specify your user name to be used in new templates
#user=Your Name <your.name at your.org>

Agora descomente a linha

 
#user=Your Name <your.name at your.org>

e troque por:

user=Fulano da silva <fulano@gmail.com>

Salve o arquivo e crie uma nova classe. O resultado será algo como:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.model;

/**
 *
 * @author Fulano da silva <fulano@gmail.com>
 */
public class Test2 {

}

Bom, agora vamos limar o comentário padrão Joselito To change this template, …

Abra novamente o modelo: menu ferramentas-> modelo -> botão abrir no editor conforme figura abaixo:
4_comment_2013-07-01_224703

Irá abrir o arquivo de config do template neste formato:

<#assign licenseFirst = "/*">
<#assign licensePrefix = " * ">
<#assign licenseLast = " */">
<#include "../Licenses/license-${project.license}.txt">

<#if package?? && package != "">
package ${package};

</#if>
/**
 *
 * @author ${user}
 */
public class ${name} {

}

Para remover o comentário só arrancar as 4 primeiras linhas abaixo:

<#assign licenseFirst = "/*">
<#assign licensePrefix = " * ">
<#assign licenseLast = " */">
<#include "../Licenses/license-${project.license}.txt">

Salvar o arquivo. ficará assim sem o comentário:

<#if package?? && package != "">
package ${package};

</#if>
/**
 *
 * @author ${user}
 */
public class ${name} {

}

Dá pra deixar ainda mais bacana, vc pode por exemplo colocar a data de criação, veja o exemplo que eu uso:

<#if package?? && package != "">
package ${package};

</#if>
/**
 * @brief Classe ${name}
 * @author ${user}
 * @date   ${date?date?string("dd/MM/yyyy")}
 */
public class ${name} {

}

Agora sim, ficou bem melhor. última dica é dar uma olhadas nas opções de variáveis: http://wiki.netbeans.org/FaqTemplateVariables

E por hoje é só pessoal.

vlw

5 Comentários

Arquivado em Ferramentas, Netbeans, template default

Java classe System é mto mais que só System.out.prinln

A classe System(pacote java.lang) é uma das classe mais populares(existe deste a versão jdk1.0) do Java em particular os métodos de saída(out): print, println, e de entrada(in): System.in. Tal popularidade deve-se justamente ao fato das facilidades de entrada e saída de dados, mas a classe System não é só isto. Ela prove outros recursos úteis para os desenvolvedores (saída de erro, leitura de variáveis de ambiente, e otras cositas más). Fuçando na API da classe http://docs.oracle.com/javase/7/docs/api/java/lang/System.html dá pra ver que ela tem muitas coisas legais, então decidi montar uma relação com alguns exemplos pra ilustrar o uso. Se alguém tiver mais algo a acrescentar, sinta-se a vontade  🙂

System.in:  entrada padrão input stream  – utiliza a classe InputStream do pacote java.io.

Scanner scan = new Scanner(System.in);
System.out.println ("Digite: ");
String entrada = scan.nextLine();
System.out.println ("Você digitou: " +entrada);

Na primeira linha o objeto System.in provê recurso para leitura do “input stream” dos dados digitados (teclado) pelo usuário, segundo a API é possível inputar dados por outros sources. A classe Scanner auxilia no tratamento deste input stream tornando a maninpulação mais intuitiva ao desenvolvedor. Tem um post bem bacana a repeito da classe Scanner, escrito por Marcio Ballem e pode ser conferido no endereço: http://mballem.wordpress.com/2012/05/01/ler-dados-do-teclado-com-a-classe-scanner/

System.out:   saída padrão output stream – utiliza a classe PrintStream do pacote java.io.

System.out.print():

Imprime na console Java o valor de entrada.

Suporta vários tipos na assinatura do seu método, veja a lista completa http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println()

Obs. O suporte é o mesmo que da lista de tipos do println. Imagino que os caras na api reaproveitaram o print e adicionaram o “\n” no final pra ser tão igual rs.

Exemplo:

boolean b = false;
//imprime o valor booelano
System.out.print("booleano:" + b);

int i = -1;        
//imprime o valor do primitivo inteiro e dá um enter (\n") no final 
System.out.print("inteiro:" + i + "\n");
        
Double db = 10d;
float ft = 20f;
BigDecimal bgd = new BigDecimal(30);
//imprime os valores Double(objeto), float(primitivo) e BigDecimal(objeto) 
System.out.print("double: " + db + " float: " + ft + " BigDecimal: " + bgd);

Veja a saída dos três prints ( os dois primeiros numa linha só), a instrução \n dá enter na linha.

booleano:falseinteiro:-1
double: 10.0 float: 20.0 BigDecimal: 30

System.out.println():

Imprime na console java o valor de entrada e dá um ENTER no final da linha.

Este é o clássico que até no Eclipse, se vc digitar “syso” + cltrl espaço ele escreve System.out.println() automáticamente.

Suporta vários tipos na assinatura do seu método, veja a lista completa http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println()

Exemplos:

boolean b = false;

//imprime o valor booelano e dá um enter no final
System.out.println("booleano:" + b);

int i = -1;

//imprime o valor do primitivo inteiro e dá um enter no final
System.out.println("inteiro:" + i);

Double db = 10d;
float ft = 20f;
BigDecimal bgd = new BigDecimal(30);

//imprime os valores Double(objeto), float(primitivo) e BigDecimal(objeto) e dá um enter no final
System.out.println("double: " + db + " float: " + ft + " BigDecimal: " + bgd);

saída:

booleano:false
inteiro:-1
double: 10.0 float: 20.0 BigDecimal: 30

System.out.printf:

Imprime na console Java o valor de entrada formatado de acordo com parâmetro especificado.
Exemplo:

char three[] = { 't', 'h', 'r', 'e', 'e' };
System.out.printf("%b %n %c %n %s %n %s %n %d %n" 
+ "%d %n %g %n %g %n %s %n", 
!false, '3'
, new String(three)
, "Three"
,3
, Long.MAX_VALUE
, Math.PI, Double.MAX_VALUE
, new Object());

retirado de: http://www.java2s.com/Code/Java/Development-Class/Systemoutprintfbncnsnsndn.htm

saída:


true

3

three

Three

3

9223372036854775807

3.14159

1.79769e+308

java.lang.Object@61de33

Além do exemplo vale comentar que a formatação fica a gosto do freguês, veja:

String a = "string";
double dbb = 4445.67555;
int c = 60;

System.out.println();
System.out.printf("%s - %.2f - %.4f - %0,20.3f - %d\n",  a, dbb,  dbb, dbb,c);

saída:

string - 4445,68 - 4445,6756 - 000000000004.445,676 - 60

Note que:
%.2f imprime duas casas após o ponto
%.4f imprime quatro casas após o ponto
%0,20.3f imprime zeros a esquerda até atingir 20 caracteres, leva em consideração ponto e virgulas tbem.
Existe outros formatos “%”, veja uma lista com mais exemplos no link: http://jexp.ru/index.php/Java_by_API/java.lang/System.out.printf

System.err:  saída padrão de erro output stream – utiliza a classe PrintStream do pacote java.io

É similar ao funcionamento de System.out porém é normalmente utilizado para imprimir texto de erro.

Por exemplo, se vc quiser fazer o seu próprio logador de error (tipo looggind da vida) num arquivo .txt, poderia fazer algo do tipo:

File erros = new File("log_de_erros.txt");
FileOutputStrem fout = new FileOutputStream(erros);
System.setErr(fout);

Daí todos os erros enviados a System.err serão registrados no seu arquivo “log_de_erros.txt”

Outro exemplo para demonstrar à diferença:

try {
   InputStream input = new FileInputStream("c:\\aplicacao\\dados.txt");
    System.out.println("Aberto arquivo...");
} catch (IOException e){//ops... deu BO
   System.err.println("Falha ao tentar abrir o arquivo:");
   e.printStackTrace();
}

Tem IDE a exemplo do Eclipse que printa em vermelho mensagens de erro.

Não é só isto meu povo, tem mais métodos bacanas.

System.arraycopy:

Copia um array

char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' };
char[] copyTo = new char[7];

//copyFrom - array de origem
//2 - indice do começo da cópia do array de origem para o array de destino, ou seja, vai copiar a partir desta posição
//copyTo - array que irá receber a cópia
//0 - análogo ao índice do começo da cópia do array de origem, só que aplicado ao array de destino.
//7 - número de elementos copiados do array de origem. siz, lenght, tamanho...
System.arraycopy(copyFrom, 2, copyTo, 0, 7);
System.out.println(new String(copyTo));

System.getProperty(String chave) e getProperties():

Possibilitar pegar as propriedades do sistema. A listar completa pode ser conferida no link http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#getProperties()

Exemplos:

Trazer o usuário logado. Passa a chave “user.name” veja relação de outras chaves no link da lista completa, ok?

//Traz o nome do usuário logado no sistema
System.out.println(System.getProperty ("user.name"));

saída:

ricardo.spinoza

O método getProperties() traz uma relação com todas as propriedades do sistema corrente, veja exemplo:

System.getProperties().list(System.out);

saída:

-- listing properties --
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=C:\Program Files\Java\jre7\bin
java.vm.version=21.1-b02
java.vm.vendor=Oracle Corporation
java.vendor.url=http://java.oracle.com/
path.separator=;
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg=sun.io
user.script=
user.country=BR
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=Service Pack 1
java.vm.specification.name=Java Virtual Machine Specification
user.dir=C:\workspace\oca
java.runtime.version=1.7.0_01-b08
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Java\jre7\lib\endorsed
os.arch=amd64
java.io.tmpdir=C:\Users\RICARD~1.PER\AppData\Local\T...
line.separator=
java.vm.specification.vendor=Oracle Corporation
user.variant=
os.name=Windows 7
sun.jnu.encoding=Cp1252
java.library.path=C:\Program Files\Java\jre7\bin;C:\Win...
java.specification.name=Java Platform API Specification
java.class.version=51.0
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
os.version=6.1
user.home=C:\Users\ricardo.spinoza
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=Cp1252
java.specification.version=1.7
user.name=ricardo.spinoza
java.class.path=C:\workspace\oca\bin
java.vm.specification.version=1.7
sun.arch.data.model=64
java.home=C:\Program Files\Java\jre7
sun.java.command=Teste
java.specification.vendor=Oracle Corporation
user.language=pt
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.7.0_01
java.ext.dirs=C:\Program Files\Java\jre7\lib\ext;C:...
sun.boot.class.path=C:\Program Files\Java\jre7\lib\resour...
java.vendor=Oracle Corporation
file.separator=\
java.vendor.url.bug=http://bugreport.sun.com/bugreport/
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.desktop=windows
sun.cpu.isalist=amd64

System.getenv(String name) e System.getenv():

Retorna o valor de uma variavel de ambiente. Se houver esquema de segurança o metodo checkPermission é acionado pra validar permissão de acesso.
 
Exemplo:

String javaHome = System.getenv("JAVA_HOME");

//no windows similar ao comando echo %JAVA_HOME%
System.out.println("JAVA_HOME: "  + javaHome);

//no windows similar ao comando echo %USERNAME%

String userWindows = System.getenv("USERNAME");
System.out.println("USERNAME: "  + userWindows);

Há também o método Map<String,String> getenv() retorna um Map com todas as variávies de ambiente, veja exemplo:

Map<String, String> env = System.getenv();
for (String nomeVariavel : env.keySet()) {
  System.out.format("%s=%s\n", nomeVariavel, env.get(nomeVariavel));
}

System.exit(int valor):

Termina a execução corrente do programa. Por convenção valor diferente de ZERO é considerado termino anormal do programa.

//termino de execução normal
System.exit(0);

//termino de execução Anormal
System.exit(-1);

Outro exemplo que achei no stackoverflow http://stackoverflow.com/questions/6937660/difference-between-system-exit0-and-system-exit-1

public class Test {
  public static void main(String[] args) throws Exception {
    System.exit(args.length);
  }
}

Na linha de comando a execução do programa Java Test no primeiro caso length é zero “exit(0)“, pois não tem parametro, o programa termina com êxito e exibe a mensagem de sucesso, já no segundo caso é informado um parametro e valor de lenght passa a valer 1 “exit(1)” e o programa termina em estado anormal, note que a mensagem de sucesso não é exibida conforme visto logo abaixo.

~ $ java Test && echo Success!
Success!//retorno na console por causa do System.exit(0)

~ $ java Test boom && echo Success!
//SEM retorno na console por causa do System.exit(1)
//qqr coisa diferente se zero é terminação anormal

Finalizando, tentei expor neste post a importância desta API e o quanto é bem útil na vida do desenvolvedor. Espero que tenha sido útil pra alguém 🙂

Flw

Deixe um comentário

Arquivado em Java, Utilidades

Sql Server: Exemplo de como testar existência de coluna antes de remover/drop da tabela

A query abaixo é um exemplo de como testar existência de coluna antes de remover/drop da tabela

IF EXISTS(
    SELECT * FROM sys.columns 
      WHERE Name = N'NOME_COLUNA_PARA_REMOVER' and Object_ID = Object_ID(N'NOME_TABELA')
)
BEGIN
    --Lima a coluna existente
    ALTER TABLE NOME_TABELA DROP COLUMN NOME_COLUNA_PARA_REMOVER
END

Obs. Lembrando que este exemplo é especifico para SQL Server.

T+

Deixe um comentário

Arquivado em Banco de Dados, SQL

Função JavaScript que truncar/cortar string e coloca “…” no final

	//Funcao js para truncar/cortar string e jogar "..." no final de acordo com o tamanho/size desejado
	//@param str: string do texto pra truncar/cortar. Deve ter o tamanho minimo para comportar os 3 caracteres "..."
	//@param size: tamanho da string antes dos "..."
	function doTruncarStr(str, size){
		if (str==undefined || str=='undefined' || str =='' || size==undefined || size=='undefined' || size ==''){
			return str;
		}
		
		var shortText = str;
		if(str.length >= size+3){
			shortText = str.substring(0, size).concat('...');
		}
		return shortText;
	}	
	

Exemplo de uso e saída:

	
	
	doTruncarStr('a',3);//retorna "a" pq a string não tem tamanho minino (3)
	
	doTruncarStr('curto',3);//retorna "curto" pq a string não tem tamanho minino (3)
	
	doTruncarStr('textos',3);//retorna "tex..."
	
	doTruncarStr('Estah string blablabla',19);//retorna "Estah string blabla..."
	
	doTruncarStr('',3);//retorna ""
	
	doTruncarStr('vida loka',0);//retorna ""
	
	doTruncarStr('loka',1);//retorna "l..."
	

Flw

Deixe um comentário

Arquivado em JavaScript/Afins