Retirar caracteres na consulta sql [RESOLVIDO]

5 respostas
G

Seguinte pessoal, estou fazendo um sql para buscar uma pessoa através do seu cnpj. Mas o parametro que eu estou passando não é com os pontos, traços e barras que tem no cnpj, e no meu BD(PostgreSQL) está salvo com esses caracters (. - /).
EX:

Parametro: 00000000000000
No banco: 000.000.000/0000-0

Alguem sabe uma função, ou como fazer a retirada desses caracteres no momento da consulta?

Obrigado.

5 Respostas

J

gilvanandre:
Seguinte pessoal, estou fazendo um sql para buscar uma pessoa através do seu cnpj. Mas o parametro que eu estou passando não é com os pontos, traços e barras que tem no cnpj, e no meu BD(PostgreSQL) está salvo com esses caracters (. - /).
EX:

Parametro: 00000000000000
No banco: 000.000.000/0000-0

Alguem sabe uma função, ou como fazer a retirada desses caracteres no momento da consulta?

Obrigado.

Fiz aqui meio na pressa, nao sei se funciona, mas testa aí! Se não funcionar, a solução não deve fugir muito disso:

CREATE OR REPLACE FUNCTION retira_especiais(character varying)
  RETURNS character varying AS
$$
SELECT translate($1, './-', '')
$$
LANGUAGE sql;

Aí na hora de fazer a consulta basta chamar o retira_especiais(parametro_desejado), no caso, o CNPJ!

:smiley:

N

Acredito que seja mais simples vc formatar no java mesmo antes de fazer o select.
Se a tabela tiver muitos registros, a consulta pode ficar demorada formatando no sql.

G

jeanmalvessi:
gilvanandre:
Seguinte pessoal, estou fazendo um sql para buscar uma pessoa através do seu cnpj. Mas o parametro que eu estou passando não é com os pontos, traços e barras que tem no cnpj, e no meu BD(PostgreSQL) está salvo com esses caracters (. - /).
EX:

Parametro: 00000000000000
No banco: 000.000.000/0000-0

Alguem sabe uma função, ou como fazer a retirada desses caracteres no momento da consulta?

Obrigado.

Fiz aqui meio na pressa, nao sei se funciona, mas testa aí! Se não funcionar, a solução não deve fugir muito disso:

CREATE OR REPLACE FUNCTION retira_especiais(character varying)
  RETURNS character varying AS
$$
SELECT translate($1, './-', '')
$$
LANGUAGE sql;

Aí na hora de fazer a consulta basta chamar o retira_especiais(parametro_desejado), no caso, o CNPJ!

:smiley:

Valeu rapaz… DETALHE: O CARA TRABALHA NA MESA DO MEU LADO. HEUHEUEHUEHUEHUEHUEHUEHEUHEU

B
public class ValidarSemPontos {

	private String removePontos(final String documento) {
		String documentoSemPonto = documento.trim().replace("-","").replace(".", "").replace("/", "");
		return documentoSemPonto;
	}
	
	public static void main(String[] args) {
		ValidarSemPontos vsp = new ValidarSemPontos();
		// Exemplo com cpf
		String cpf ="[CPF removido]";
		System.out.println(vsp.removePontos(cpf));
		
		// Exemplo com cnpj
		String cnpj ="363.865.570/0015-0";
		System.out.println(vsp.removePontos(cnpj));
	}
}
G
brunoprogramadorjava:
public class ValidarSemPontos {

	private String removePontos(final String documento) {
		String documentoSemPonto = documento.trim().replace("-","").replace(".", "").replace("/", "");
		return documentoSemPonto;
	}
	
	public static void main(String[] args) {
		ValidarSemPontos vsp = new ValidarSemPontos();
		// Exemplo com cpf
		String cpf ="[CPF removido]";
		System.out.println(vsp.removePontos(cpf));
		
		// Exemplo com cnpj
		String cnpj ="363.865.570/0015-0";
		System.out.println(vsp.removePontos(cnpj));
	}
}

Obrigado, mas não é isso que eu preciso. Já resolvi com o que o rapaz acima me mandou.
O que eu precisava era uma função direto no PostgreSQL que retirasse esses acentos, e não uma classe com uma função, isso eu já tenho.

Mesmo assim obrigado.

Criado 22 de março de 2013
Ultima resposta 22 de mar. de 2013
Respostas 5
Participantes 4