找到IBM DB2 CAST失败的原因

时间:2015-03-20 20:52:41

标签: sql db2

我需要处理IBM DB2数据库。

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

要对表格进行排序,该列会转换为INTEGER

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

目前,这失败了:

  

ERROR [22018] [IBM] [DB2 / AIX64] SQL0420N在函数“INTEGER”的字符串参数中找到无效字符。

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

IBM's solution“确保在转换为数字类型时,为其应用的强制转换的查询项设置的结果不包含非数字SQL常量。” < / p>

这不是真的有用。

如果有人插入字母O或小写字母L,我试过这个:

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

返回零记录。

1 个答案:

答案 0 :(得分:1)

  

这并不是真的有用。

简而言之,那是IBM的错误消息和文档。

一个起点是TRANSLATE() function

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

您可以添加其他字符,例如-.等,具体取决于您找到的内容。