我需要处理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
返回零记录。
答案 0 :(得分:1)
这并不是真的有用。
简而言之,那是IBM的错误消息和文档。
一个起点是TRANSLATE()
function。
SELECT LOCATION, PARTNO, INSTOCK
FROM INVENTORY
WHERE TRANSLATE(LOCATION, '', ' 0123456789') <> ''
您可以添加其他字符,例如-
,.
等,具体取决于您找到的内容。