Re: [oracle_br] Re: Como remover o traço

2017-06-09 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Meu caro, o problema é que vc está confiando em conversão implícita : quando vc 
passa um número (uma expressão numérica, na verdade) pra uma função caracter, o 
banco é ** TOTALMENTE LIVRE ** para OU primeiro resolver a expressão (aí o 
4506-3 passa a ser uma CONTA, que vai ser resolvida antes) , OU então 
transfromar tudo em string (caso em que a expressão numérica 4506-3 vira a 
string '4506-3', aí o REPLACE funciona) 
 Então REPITO : ** pare ** de confiar em conversão Implícita!!! Se o valor é 
uma string, meta aspinhas nela

[]s

  Chiappa

Re: [oracle_br] Como remover o traço

2017-06-09 Por tôpico Mario Rodrigues marioirodrig...@gmail.com [oracle_br]
Pessoal,

Bom Dia

Como precisava ser algo pra ontem (como sempre) fiz um novo extract a
inseri os dados (q preenche a variável) em tabelas diferentes (um pra cada
select da function) isso já resolveu (vai saber pq) ... sinceramente não
faço ideia o que possa ser ...

Emerson eu tinha tentado usar o regexp tb sem sucesso ..

Sergio tai nao tinha tentado a questão do translate .. mas acho q nao é
isso tb .. mas vou testar assim que tiver um tempinho aqui

Luis vi sim, acho que eu não soube implementar o sua ideia, pois nao rodou
... mas enfim ainda vou rever tudo e pra tentar achar o motivo disso ...

Obrigado de verdade a todos pela ajuda de sempre ... o/


2017-06-09 12:00 GMT-03:00 Luis Freitas lfreita...@yahoo.com [oracle_br] <
oracle_br@yahoogrupos.com.br>:

>
>
> Mario,
>
>   Você viu meu e-mail de ontem sobre o '' e SQL dinâmico?
>
>Se estiver fazendo tudo certo mesmo, pode ser um bug, mas acho difícil.
>
>Veja se tem índice nas colunas das duas tabelas, e confirme o tipo de
> dados em ambas e nas variáveis que está passando? O índice pode mudar o
> plano de execução e estar expondo algum bug de resultado incorreto.
>
>O parâmetro cursor_sharing=FORCE está setado? Se estiver, altera ele no
> nível de sessão e veja se muda o comportamento:
>
> alter session set CURSOR_SHARING=EXACT;
>
> Atc,
> Luis Freitas
>
>
> On Friday, June 9, 2017 11:26 AM, "'Emerson S. Gaudencio'
> emerson.fen...@gmail.com [oracle_br]" 
> wrote:
>
>
>
> @Mario Rodrigues,
>
>  Tente utilizar essa função aqui:
>  http://blog.gaudencio.net.br/2015/11/oracle-funcao-para-
> remover-caracteres.html
>
> Essa função serve para remover caracteres especiais de string e deixar
> somente letras e numero, assim atende sua lógica e não precisa ficar
> pensando em utilizar replace.
>
> Att,
> Emerson
>
> 2017-06-09 9:42 GMT-03:00 Mario Rodrigues marioirodrig...@gmail.com
> [oracle_br] :
>
>
> Pessoal,
>
> Serio ... pq este funciona
>
> SELECT  nvl(round(VALOR,2),0) into v_custo
> FROM TABELA1
> WHERE ITEM = replace(coditem,'-','')
> ;
>
>  e este não
> SELECT nvl(round(VALOR,2),0) INTO v_preco_original
> FROM
>  TABELA2
> WHERE CODIGO_ITEM =  replace(coditem,'-','')
> ;
>
> Tipo de dados do ITEM e CODIGO_ITEM são os mesmos.
>
> O que mais eu posso ver???
>
>
>
> Em 9 de junho de 2017 09:15, Mario Rodrigues 
> escreveu:
>
> Bom Dia pessoal
>
> Pois eh ... ate criei uma funcão
>
> FUNCTION CONVERTCODITEM(p_coditem in VARCHAR2)
>RETURN NUMBER
>IS item NUMBER(20);
>BEGIN
>SELECT NOVOITEM
>   INTO item
>   from(
>   SELECT
> SUBSTR(replace(p_coditem,'-',' '), 1,
> LENGTH(replace(p_coditem,'-',' ')) - 1) NOVOITEM
>   FROM DUAL);
>
>   RETURN(item);
> END;
>
> preciso que o codigo 4506-3 retorne somente 4506 ...
>
>
> nao sei mesmo o motivo disso estar acontecendo, pois como falei em outro
> select em outra funcao funciona perfeitamente .. o tipo de dados é VARCHAR2
> ..
>
>
>
>
> Em 9 de junho de 2017 00:14, 'Marcelino Mota' supo...@linguagem.com.br
> [oracle_br]  escreveu:
>
>
> Mario,
>
> Verifica o tipo de dado que você esta usando se é char ou varchar2 apesar
> de serem strings, se comportam de maneira diferente.
>
> Att.
>
> Marcelino
>
>
>
>
>
>
> 
>


Re: [oracle_br] Como remover o traço

2017-06-09 Por tôpico Luis Freitas lfreita...@yahoo.com [oracle_br]
Mario,
  Você viu meu e-mail de ontem sobre o '' e SQL dinâmico?
   Se estiver fazendo tudo certo mesmo, pode ser um bug, mas acho difícil.
   Veja se tem índice nas colunas das duas tabelas, e confirme o tipo de dados 
em ambas e nas variáveis que está passando? O índice pode mudar o plano de 
execução e estar expondo algum bug de resultado incorreto.
   O parâmetro cursor_sharing=FORCE está setado? Se estiver, altera ele no 
nível de sessão e veja se muda o comportamento: 
alter session set CURSOR_SHARING=EXACT;
Atc,Luis Freitas 

On Friday, June 9, 2017 11:26 AM, "'Emerson S. Gaudencio' 
emerson.fen...@gmail.com [oracle_br]"  wrote:
 

     @Mario Rodrigues,
 Tente utilizar essa função aqui:
 http://blog.gaudencio.net.br/2015/11/oracle-funcao-para-remover-caracteres.html

Essa função serve para remover caracteres especiais de string e deixar somente 
letras e numero, assim atende sua lógica e não precisa ficar pensando em 
utilizar replace.
Att,Emerson
2017-06-09 9:42 GMT-03:00 Mario Rodrigues marioirodrig...@gmail.com [oracle_br] 
:

     Pessoal,
Serio ... pq este funciona 
                SELECT  nvl(round(VALOR,2),0) into v_custo                FROM 
TABELA1                WHERE ITEM = replace(coditem,'-','')                 ;   
              e este não                SELECT nvl(round(VALOR,2),0) INTO 
v_preco_original                 FROM                  TABELA2                
WHERE CODIGO_ITEM =  replace(coditem,'-','')                 ;
Tipo de dados do ITEM e CODIGO_ITEM são os mesmos.
O que mais eu posso ver???


Em 9 de junho de 2017 09:15, Mario Rodrigues  
escreveu:

Bom Dia pessoal
Pois eh ... ate criei uma funcão
FUNCTION CONVERTCODITEM(p_coditem in VARCHAR2)   RETURN NUMBER   IS item 
NUMBER(20);   BEGIN   SELECT NOVOITEM       INTO item       from(      SELECT   
                    SUBSTR(replace(p_coditem,'-',' '), 1, 
LENGTH(replace(p_coditem,'-',' ')) - 1) NOVOITEM      FROM DUAL);
      RETURN(item);    END;
preciso que o codigo 4506-3 retorne somente 4506 ...

nao sei mesmo o motivo disso estar acontecendo, pois como falei em outro select 
em outra funcao funciona perfeitamente .. o tipo de dados é VARCHAR2 .. 



Em 9 de junho de 2017 00:14, 'Marcelino Mota' supo...@linguagem.com.br 
[oracle_br]  escreveu:

     Mario, Verifica o tipo de dado que você esta usando se é char ou varchar2 
apesar de serem strings, se comportam de maneira diferente. Att. Marcelino   



   

  #yiv3524427644 #yiv3524427644 -- #yiv3524427644ygrp-mkp {border:1px solid 
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv3524427644 
#yiv3524427644ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv3524427644 
#yiv3524427644ygrp-mkp #yiv3524427644hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv3524427644 #yiv3524427644ygrp-mkp #yiv3524427644ads 
{margin-bottom:10px;}#yiv3524427644 #yiv3524427644ygrp-mkp .yiv3524427644ad 
{padding:0 0;}#yiv3524427644 #yiv3524427644ygrp-mkp .yiv3524427644ad p 
{margin:0;}#yiv3524427644 #yiv3524427644ygrp-mkp .yiv3524427644ad a 
{color:#ff;text-decoration:none;}#yiv3524427644 #yiv3524427644ygrp-sponsor 
#yiv3524427644ygrp-lc {font-family:Arial;}#yiv3524427644 
#yiv3524427644ygrp-sponsor #yiv3524427644ygrp-lc #yiv3524427644hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv3524427644 
#yiv3524427644ygrp-sponsor #yiv3524427644ygrp-lc .yiv3524427644ad 
{margin-bottom:10px;padding:0 0;}#yiv3524427644 #yiv3524427644actions 
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv3524427644 
#yiv3524427644activity 
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv3524427644
 #yiv3524427644activity span {font-weight:700;}#yiv3524427644 
#yiv3524427644activity span:first-child 
{text-transform:uppercase;}#yiv3524427644 #yiv3524427644activity span a 
{color:#5085b6;text-decoration:none;}#yiv3524427644 #yiv3524427644activity span 
span {color:#ff7900;}#yiv3524427644 #yiv3524427644activity span 
.yiv3524427644underline {text-decoration:underline;}#yiv3524427644 
.yiv3524427644attach 
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 
0;width:400px;}#yiv3524427644 .yiv3524427644attach div a 
{text-decoration:none;}#yiv3524427644 .yiv3524427644attach img 
{border:none;padding-right:5px;}#yiv3524427644 .yiv3524427644attach label 
{display:block;margin-bottom:5px;}#yiv3524427644 .yiv3524427644attach label a 
{text-decoration:none;}#yiv3524427644 blockquote {margin:0 0 0 
4px;}#yiv3524427644 .yiv3524427644bold 
{font-family:Arial;font-size:13px;font-weight:700;}#yiv3524427644 
.yiv3524427644bold a {text-decoration:none;}#yiv3524427644 dd.yiv3524427644last 
p a {font-family:Verdana;font-weight:700;}#yiv3524427644 dd.yiv3524427644last p 
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv3524427644 
dd.yiv3524427644last p 

RES: [oracle_br] Como remover o traço

2017-06-09 Por tôpico 'Sergio Pennacchiotti' sergiofp...@yahoo.com.br [oracle_br]
Uso a combinação de translate e replace abaixo:

 

replace(trim(translate( c_text

  
,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ!&<>\' || chr(  9) || 
chr( 10) || chr( 13) || chr( 34) || chr( 39)

  
,'AACNOYaaconoyy e   ' || chr(182) || 
chr(182) || chr(182) || chr(182) || chr(182)

  )

  ),chr(182),null

  );

 

Abraço

Sérgio Pennacchiotti

 

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] 
Enviada em: Friday, June 09, 2017 11:27
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Como remover o traço

 

  

@Mario Rodrigues,

 

 Tente utilizar essa função aqui:
 http://blog.gaudencio.net.br/2015/11/oracle-funcao-para-remover-caracteres.html

 

Essa função serve para remover caracteres especiais de string e deixar somente 
letras e numero, assim atende sua lógica e não precisa ficar pensando em 
utilizar replace.

 

Att,

Emerson

 

2017-06-09 9:42 GMT-03:00 Mario Rodrigues marioirodrig...@gmail.com 
  [oracle_br]  >:

  

Pessoal,

 

Serio ... pq este funciona 

 

SELECT  nvl(round(VALOR,2),0) into v_custo

FROM TABELA1

WHERE ITEM = replace(coditem,'-','') 

;



 e este não

SELECT nvl(round(VALOR,2),0) INTO v_preco_original 

FROM 

 TABELA2

WHERE CODIGO_ITEM =  replace(coditem,'-','') 

;

 

Tipo de dados do ITEM e CODIGO_ITEM são os mesmos.

 

O que mais eu posso ver???

 

 

 

Em 9 de junho de 2017 09:15, Mario Rodrigues  > escreveu:

Bom Dia pessoal

 

Pois eh ... ate criei uma funcão

 

FUNCTION CONVERTCODITEM(p_coditem in VARCHAR2)

   RETURN NUMBER

   IS item NUMBER(20);

   BEGIN

   SELECT NOVOITEM 

  INTO item 

  from(

  SELECT   

SUBSTR(replace(p_coditem,'-',''), 1, 
LENGTH(replace(p_coditem,'-','')) - 1) NOVOITEM

  FROM DUAL);

 

  RETURN(item);

END;

 

preciso que o codigo 4506-3 retorne somente 4506 ..

 

 

nao sei mesmo o motivo disso estar acontecendo, pois como falei em outro select 
em outra funcao funciona perfeitamente .. o tipo de dados é VARCHAR2 .. 

 

 

 

Em 9 de junho de 2017 00:14, 'Marcelino Mota' supo...@linguagem.com.br 
  [oracle_br]  > escreveu:

  

Mario,

 

Verifica o tipo de dado que você esta usando se é char ou varchar2 apesar de 
serem strings, se comportam de maneira diferente.

 

Att.

 

Marcelino

 

 

 





[As partes desta mensagem que não continham texto foram removidas]



Re: [oracle_br] Como remover o traço

2017-06-09 Por tôpico 'Emerson S. Gaudencio' emerson.fen...@gmail.com [oracle_br]
@Mario Rodrigues,

 Tente utilizar essa função aqui:

http://blog.gaudencio.net.br/2015/11/oracle-funcao-para-remover-caracteres.html

Essa função serve para remover caracteres especiais de string e deixar
somente letras e numero, assim atende sua lógica e não precisa ficar
pensando em utilizar replace.

Att,
Emerson

2017-06-09 9:42 GMT-03:00 Mario Rodrigues marioirodrig...@gmail.com
[oracle_br] :

>
>
> Pessoal,
>
> Serio ... pq este funciona
>
> SELECT  nvl(round(VALOR,2),0) into v_custo
> FROM TABELA1
> WHERE ITEM = replace(coditem,'-','')
> ;
>
>  e este não
> SELECT nvl(round(VALOR,2),0) INTO v_preco_original
> FROM
>  TABELA2
> WHERE CODIGO_ITEM =  replace(coditem,'-','')
> ;
>
> Tipo de dados do ITEM e CODIGO_ITEM são os mesmos.
>
> O que mais eu posso ver???
>
>
>
> Em 9 de junho de 2017 09:15, Mario Rodrigues 
> escreveu:
>
>> Bom Dia pessoal
>>
>> Pois eh ... ate criei uma funcão
>>
>> FUNCTION CONVERTCODITEM(p_coditem in VARCHAR2)
>>RETURN NUMBER
>>IS item NUMBER(20);
>>BEGIN
>>SELECT NOVOITEM
>>   INTO item
>>   from(
>>   SELECT
>> SUBSTR(replace(p_coditem,'-',''), 1,
>> LENGTH(replace(p_coditem,'-','')) - 1) NOVOITEM
>>   FROM DUAL);
>>
>>   RETURN(item);
>> END;
>>
>> preciso que o codigo 4506-3 retorne somente 4506 ...
>>
>>
>> nao sei mesmo o motivo disso estar acontecendo, pois como falei em outro
>> select em outra funcao funciona perfeitamente .. o tipo de dados é VARCHAR2
>> ..
>>
>>
>>
>>
>> Em 9 de junho de 2017 00:14, 'Marcelino Mota' supo...@linguagem.com.br
>> [oracle_br]  escreveu:
>>
>>>
>>>
>>> Mario,
>>>
>>>
>>>
>>> Verifica o tipo de dado que você esta usando se é char ou varchar2
>>> apesar de serem strings, se comportam de maneira diferente.
>>>
>>>
>>>
>>> Att.
>>>
>>>
>>>
>>> Marcelino
>>>
>>>
>>
> 
>


Re: [oracle_br] Como remover o traço

2017-06-09 Por tôpico Mario Rodrigues marioirodrig...@gmail.com [oracle_br]
Pessoal,

Serio ... pq este funciona

SELECT  nvl(round(VALOR,2),0) into v_custo
FROM TABELA1
WHERE ITEM = replace(coditem,'-','')
;

 e este não
SELECT nvl(round(VALOR,2),0) INTO v_preco_original
FROM
 TABELA2
WHERE CODIGO_ITEM =  replace(coditem,'-','')
;

Tipo de dados do ITEM e CODIGO_ITEM são os mesmos.

O que mais eu posso ver???



Em 9 de junho de 2017 09:15, Mario Rodrigues 
escreveu:

> Bom Dia pessoal
>
> Pois eh ... ate criei uma funcão
>
> FUNCTION CONVERTCODITEM(p_coditem in VARCHAR2)
>RETURN NUMBER
>IS item NUMBER(20);
>BEGIN
>SELECT NOVOITEM
>   INTO item
>   from(
>   SELECT
> SUBSTR(replace(p_coditem,'-',''), 1,
> LENGTH(replace(p_coditem,'-','')) - 1) NOVOITEM
>   FROM DUAL);
>
>   RETURN(item);
> END;
>
> preciso que o codigo 4506-3 retorne somente 4506 ...
>
>
> nao sei mesmo o motivo disso estar acontecendo, pois como falei em outro
> select em outra funcao funciona perfeitamente .. o tipo de dados é VARCHAR2
> ..
>
>
>
>
> Em 9 de junho de 2017 00:14, 'Marcelino Mota' supo...@linguagem.com.br
> [oracle_br]  escreveu:
>
>>
>>
>> Mario,
>>
>>
>>
>> Verifica o tipo de dado que você esta usando se é char ou varchar2 apesar
>> de serem strings, se comportam de maneira diferente.
>>
>>
>>
>> Att.
>>
>>
>>
>> Marcelino
>>
>> 
>>
>
>


Re: [oracle_br] Como remover o traço

2017-06-09 Por tôpico Mario Rodrigues marioirodrig...@gmail.com [oracle_br]
Bom Dia pessoal

Pois eh ... ate criei uma funcão

FUNCTION CONVERTCODITEM(p_coditem in VARCHAR2)
   RETURN NUMBER
   IS item NUMBER(20);
   BEGIN
   SELECT NOVOITEM
  INTO item
  from(
  SELECT
SUBSTR(replace(p_coditem,'-',''), 1,
LENGTH(replace(p_coditem,'-','')) - 1) NOVOITEM
  FROM DUAL);

  RETURN(item);
END;

preciso que o codigo 4506-3 retorne somente 4506 ...


nao sei mesmo o motivo disso estar acontecendo, pois como falei em outro
select em outra funcao funciona perfeitamente .. o tipo de dados é VARCHAR2
..




Em 9 de junho de 2017 00:14, 'Marcelino Mota' supo...@linguagem.com.br
[oracle_br]  escreveu:

>
>
> Mario,
>
>
>
> Verifica o tipo de dado que você esta usando se é char ou varchar2 apesar
> de serem strings, se comportam de maneira diferente.
>
>
>
> Att.
>
>
>
> Marcelino
>
> 
>