Autor Tópico: QuickSearch e PostgreSQL  (Lida 1149 vezes)

Endrigo

  • Intermediário
  • ***
  • Mensagens: 242
    • Email
QuickSearch e PostgreSQL
« Online: Agosto 24, 2013, 02:38:07 pm »
Estou tendo problemas com o QuickSearch, não sei se é somente com o banco de dados PostgreSQL.

Erro ao acessar o banco de dados
ERRO: operador não existe: boolean ~~ unknown LINE 1: ...cli_mes_pago_bin like '%dukiko%' or cli_bloqueado like '%duk... ^ HINT: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
select count(*) from "public".cad_clientes where cli_cnpj_cpf like '%dukiko%' or cli_razao_social like '%dukiko%' or cli_nome_fantasia like '%dukiko%' or cli_bairro like '%dukiko%' or cli_telefone_1 like '%dukiko%' or cli_telefone_2 like '%dukiko%' or cli_endereco like '%dukiko%' or cli_complemento like '%dukiko%' or cli_cep like '%dukiko%' or cli_responsavel like '%dukiko%' or cli_inscricao_est like '%dukiko%' or cli_inscricao_mun like '%dukiko%' or cli_mes_pago_bin like '%dukiko%' or cli_bloqueado like '%dukiko%' or cli_contrato_entregue like '%dukiko%' or cli_pedido_uso_def_entregue like '%dukiko%' or cli_versao_pdv_atual like '%dukiko%' or cli_ramo_atividade like '%dukiko%' or cli_optante_sn like '%dukiko%'


Gostaria de sugerir ao pessoal da NetMake para implementar no caso em que o banco de dados for PostgreSQL, utilizar a seguinte sequencia:

* Para campos tipo boolean, colocar automaticamente no final do nome do campo ::varchar(1);
* Para todos os campos colocar a função to_ascii(nome_campo), para poder ignorar a acentuação;
* Ao invés de utilizar LIKE utilizar ILIKE, para ignorar maiúsculas e minúsculas.

* Uma possível solução para o typecast ::varchar(1) para os campos boolean, seria poder alterar o pg_cast dos tipos bool para varchar para implícito ao invés de explícito. Mas não temos um comando ALTER CAST e o DROP CAST não funciona para esse tipo, pois é utilizado no sistema. E não sei se o oid é o mesmo para todos os bancos de dados, pois fazendo a alteração no pg_cast, a conversão implícita funcionou, não sendo mais necessário especificar o ::varchar(1) manualmente para a consulta funcionar. CREATE CAST (bool AS varchar) WITH FUNCTION text(bool) AS IMPLICIT;

Esse comando ficaria então dessa forma:

Código: [Selecionar]
select
  count(*)
from "public".cad_clientes
where
  to_ascii(cli_cnpj_cpf) ilike '%dukiko%' or
  to_ascii(cli_razao_social) ilike '%dukiko%' or
  to_ascii(cli_nome_fantasia) ilike '%dukiko%' or
  to_ascii(cli_bairro) ilike '%dukiko%' or
  to_ascii(cli_telefone_1) ilike '%dukiko%' or
  to_ascii(cli_telefone_2) ilike '%dukiko%' or
  to_ascii(cli_endereco) ilike '%dukiko%' or
  to_ascii(cli_complemento) ilike '%dukiko%' or
  to_ascii(cli_cep) ilike '%dukiko%' or
  to_ascii(cli_responsavel) ilike '%dukiko%' or
  to_ascii(cli_inscricao_est) ilike '%dukiko%' or
  to_ascii(cli_inscricao_mun) ilike '%dukiko%' or
  to_ascii(cli_mes_pago_bin) ilike '%dukiko%' or
  to_ascii(cli_bloqueado::varchar(1)) ilike '%dukiko%' or
  to_ascii(cli_contrato_entregue::varchar(1)) ilike '%dukiko%' or
  to_ascii(cli_pedido_uso_def_entregue::varchar(1)) ilike '%dukiko%' or
  to_ascii(cli_versao_pdv_atual) ilike '%dukiko%' or
  to_ascii(cli_ramo_atividade) ilike '%dukiko%' or
  to_ascii(cli_optante_sn::varchar(1)) ilike '%dukiko%'
Endrigo Rodrigues
(31)3464-1020
CentOS 6 64bits + ScriptCase 8.00.0041 + PostgreSQL 9.3

Bernhard

  • Administrator
  • Expert
  • *****
  • Mensagens: 1619
Re:QuickSearch e PostgreSQL
« Responder #1 Online: Agosto 25, 2013, 06:00:52 pm »
Boa noite,

Reportei este problema para nossa equipe de bugs.

att,
Bernhard Bernsmann

pablofarias

  • Novato
  • *
  • Mensagens: 2
Re:QuickSearch e PostgreSQL
« Responder #2 Online: Julho 19, 2016, 06:25:34 pm »
Este problema ainda existe na versao 8.1 ao inves de utilizar de like utilizar ilike.


Jailton

  • Expert
  • *****
  • Mensagens: 2588
Re:QuickSearch e PostgreSQL
« Responder #3 Online: Julho 19, 2016, 06:30:56 pm »
Este problema ainda existe na versao 8.1 ao inves de utilizar de like utilizar ilike.



Usou conexão PDO? tente com ela.
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.