定位 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') <> ''
您可以根据找到的内容添加其他字符,例如 -
、.
等。
我需要在 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') <> ''
您可以根据找到的内容添加其他字符,例如 -
、.
等。