定位 IBM DB2 CAST 失败的原因

Locate Cause of IBM DB2 CAST Failure

我需要在 IBM DB2 数据库上工作。

LOCATION 字段是一个 CHARACTER(8) 数字字段。

为了对 table 进行排序,该列被转换为 INTEGER:

SELECT LOCATION, PARTNO, INSTOCK 
FROM INVENTORY
ORDER BY CAST(LOCATION AS INTEGER)

目前,这失败了:

ERROR [22018] [IBM][DB2/AIX64] SQL0420N Invalid character found in a character string argument of the function "INTEGER".

有没有快速确定哪一行失败的方法?

IBM's solution"Insure that the results set for the query item that the cast it being applied to does not contain non numeric SQL constants when casting to a numeric type."

这并没有多大帮助。

以为有人插入了字母 O 或小写 L,我试了一下:

SELECT DISTINCT LOCATION 
FROM LOCATIONS 
WHERE LOCATION LIKE '%l%' OR LOCATION LIKE '%O%'
ORDER BY LOCATION

返回零条记录。

That wasn't really helpful.

这是 IBM 错误消息和文档的简要说明。

一个起点是 TRANSLATE() function

SELECT LOCATION, PARTNO, INSTOCK 
FROM INVENTORY
WHERE TRANSLATE(LOCATION, '', ' 0123456789') <> ''

您可以根据找到的内容添加其他字符,例如 -. 等。