Fórum Porque não consigo usar o substring? #366663

03/12/2008

0

Pessoal estou usando o firebird e não sei como fazer este substring funcionar

select * from empresa
where substring(nrcgc from 12 for 4) = 0001


Na verdade quero comparar duas tabelas com o numero do cnpj, só que uma tem ponto e o traço separando e a outra não tem

select a.*, b.nrcgc
  from funcionarios a, empresa b
  where b.nrcgc = a.cnpj


Ou seja o que esta na tabela B esta com mascara e tenho que retira-la para fazer o where funcionar, mais apenas na hora de comparar, e não retirar (apagar da tabela)


Adriano_servitec

Adriano_servitec

Responder

Posts

03/12/2008

Adriano_servitec

Ja arrumei, meu IBExpert estava com problemas,mostrando o seguinte erro:
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements. invalid transaction handle (expecting explicit transaction start).


Depois que eu conectei o ibexpert de novo consegui fazer como precisava
select  a.*, b.nrcgc
from funcionarios a, empresa b
  where (
    substring(b.nrcgc from 1 for 2)||
    substring(b.nrcgc from 4 for 3)||
    substring(b.nrcgc from 8 for 3)||
    substring(b.nrcgc from 12 for 4)||
    substring(b.nrcgc from 17 for 2) ) = a.cnpj


Mais tenho um problema e não tenho idéia ainda como resolver

Alem de CNPJ tenho CEI com mascaras assim

202.120.410-17

Como resolver isso?

Será que tem como fazer por um case? Ou iIf?

Outra pergunta, Pq simplesmente o IBExpert mostrava o erro acima citado?

Grato pela ajuda de todos.


Responder

Gostei + 0

03/12/2008

Adriano_servitec

Algo tipo assim
Código:
select  a.*, b.nrcgc,
 case when (b.nrcgc < 18) then
    substring(b.nrcgc from 1 for 3)||
    substring(b.nrcgc from 5 for 3)||
    substring(b.nrcgc from 9 for 3)||
    substring(b.nrcgc from 12 for 2)
 else
    substring(b.nrcgc from 1 for 2)||
    substring(b.nrcgc from 4 for 3)||
    substring(b.nrcgc from 8 for 3)||
    substring(b.nrcgc from 12 for 4)||
    substring(b.nrcgc from 17 for 2)
 end as TCnpj_CEI

 from funcionarios a, empresa b
   where TCnpj_CEI = a.cnpj



Sei que isso não funciona, mais preciso de alguma idéia, alguém pode me ajudar?


Responder

Gostei + 0

03/12/2008

Adriano_servitec

sobe


Responder

Gostei + 0

05/12/2008

Luiz Henrique

Adriano, bl

cara, por que voce nao cria uma UDF tipo SONUMERO(b.nrcgc) para trazer somente numeros...


Responder

Gostei + 0

06/12/2008

Adriano_servitec

[quote:2c88687064=´Luiz Henrique´]Adriano, bl

cara, por que voce nao cria uma UDF tipo SONUMERO(b.nrcgc) para trazer somente numeros...[/quote:2c88687064]Ola Luiz Henrique, blz, bom amigo, não queria usar UDF, pensei em alguma função do FB 2.0 tipo TRIM ou outro, mais não consegui ainda :D

Obrigado amigo.


Responder

Gostei + 0

06/12/2008

Luiz Henrique

blz, Adriano

?
para uma consulta deste tipo, no SQL, penso que nao tem escape de uma funcao externa, quando não existe dentro do Banco.


Responder

Gostei + 0

07/12/2008

Adriano_servitec

[quote:418990291f=´Luiz Henrique´]blz, Adriano

?
para uma consulta deste tipo, no SQL, penso que nao tem escape de uma funcao externa, quando não existe dentro do Banco.[/quote:418990291f]E ai Luiz Henrique, blz.

Ok entendi, mais não queria usar por não saber como criar a UDF e também como chama-la no banco. Então continuo parado nisso ainda.

Obrigado pela ajuda amigo.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar