我有一个查询,我执行它,并得到下面的错误,
ORA-01722:无效号码
这里是查询。
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);
表格描述如下
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)
1条答案
按热度按时间esbemjvw1#
不要在字符串中存储数值;如果你想存储数值,那么使用
NUMBER
。首先修复您的数据,然后您的查询将工作。
如果你不能修复你的数据(为什么?你应该修好它!),然后,从Oracle 12中,您可以使用
TO_NUMBER(value DEFAULT NULL ON CONVERSION ERROR)
:VARCHAR2
的列上使用TO_CHAR
。*其中,对于样本数据:
输出:
| 西班牙语|维护区域代码|维护区域名称|NE_长度|提供日期|
| --|--|--|--|--|
| AAAAAAAAA| B| C| 33 |1970-01-01 00:00:00|
fiddle