Eu tenho uma consulta onde estou executando e recebo o erro abaixo como
ORA-01722: número inválido
Aqui está a consulta.
SELECT TO_CHAR (tfc.linkid) spanid,
TO_CHAR (tfc.mz_code) AS maint_zone_code,
TO_CHAR (tfc.mz_name) AS maint_zone_name,
SUM (tfc.mho_handover_cert) AS ne_length,
TRUNC (tfc.created_date) AS offered_date
FROM app_lco.tbl_fip_checklist tfc
WHERE LENGTH (TRIM (tfc.linkid)) > 8
AND LENGTH (TRIM (tfc.linkid)) < 21
AND tfc.status = 'APPROVED'
GROUP BY TO_CHAR (tfc.linkid),
TO_CHAR (tfc.mz_code),
TO_CHAR (tfc.mz_name),
TRUNC(tfc.created_date);
A descrição da tabela está abaixo
Name Null Type
-------------------- ---- --------------
MHO_HANDOVER_CERT VARCHAR2(20)
STRAIGHT_LINE_DIAG VARCHAR2(5)
OFFERID VARCHAR2(10)
CREATED_DATE DATE
SUBMITTED_BY VARCHAR2(50)
LINKID VARCHAR2(50)
SPANID VARCHAR2(50)
STATUS VARCHAR2(15)
FILE_NAME VARCHAR2(1000)
SAP_ID VARCHAR2(30)
STATE_NAME VARCHAR2(50)
MZ_NAME VARCHAR2(70)
MZ_CODE VARCHAR2(30)
Não armazene valores numéricos em strings; se você quiser armazenar valores numéricos, use a
NUMBER
.Corrija seus dados primeiro e então sua consulta funcionará.
Se você não consegue consertar seus dados (por quê? Você deveria consertar!), então, no Oracle 12, você pode usar
TO_NUMBER(value DEFAULT NULL ON CONVERSION ERROR)
:Nota: você não precisa usar
TO_CHAR
em colunas que já sãoVARCHAR2
.Que, para os dados de amostra:
Saídas:
violino