Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
tenho uma tabela cuja estrutura está toda em VARCHAR. Essa tabela contem algumas colunas com valores decimais, e quero executar algumas queries para fazer algumas operações aritméticas, como:
-Devolver valores maiores que xx.xx, etc.
Mas estou a ter erros, como:
*ORA-12801: erro assinalado no servidor de consulta paralela P009, instance ptlhb100.pt.sedc.internal.vodafone.com:CSTMRDM2 (2)
ORA-01722: número inválido
12801. 00000 - "error signaled in parallel query server %s"
*Cause: A parallel query server reached an exception condition.
*Action: Check the following error message for the cause, and consult
your error manual for the appropriate action.
*Comment: This error can be turned off with event 10397, in which
case the server's actual error is signaled instead.*
Estou a executar a querie:
SELECT TBL_NUMBER
FROM MOBILE_UPSELL tl
WHERE TO_NUMBER(tl.ARPU_MIB) < 8.01
Já tentei TO_BINARY_NUMBER e dá o mesmo erro.
O que está mal aqui?
Obrigado
PauloOlá,
já tentei NUMBER COM FORMAT e dá:
*ORA-01722: número inválido
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
Action: Specify a valid number.
Os valores que tenho nessa coluna estão com "Ponto", ex:
8.1112222245858
0
1.233332225566
etc.
SELECT TO_NUMBER(TBL_NUMBER, '9999.99')
FROM MOBILE_UPSELLUm TRIM as vezes resolve
TO_NUMBER(TRIM(TBL_NUMBER), '9999.99')
Mas veja como os valores estão gravados se estiver usando vírgula , orecisará de outro tratanento , REPLACE etc.
>
51 minutos atrás, Motta disse:
TO_NUMBER(TRIM(TBL_NUMBER), '9999.99')
Nada,
*ORA-01722: número inválido
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
Action: Specify a valid number.
>
51 minutos atrás, Motta disse:
Mas veja como os valores estão gravados se estiver usando vírgula , orecisará de outro tratanento , REPLACE etc.
não tenho virgulas nessa coluna
Será pela quantidade de casas decimais?
Descobri que existem valores nessa coluna que estão, neste formato:
1.01251454874587e-06
Será isto que estará a causar problemas?
Além de existirem valores negativos:
-0.121547874
É a notação cientifica deve ter um formato para isto , tente com case ...
Bom, resolveu com o:
to_number(replace(TBL_NUMBER, '.', ',')) no WHERE
Obg,
Como os valores estão gravados , ponto , vírgula para decimais ?
Separador de milhar ?
Use oto_number com format.
Veja também os parâmetros de data.