DB2:如何解决十进制列的decfloat错误?

DB2:如何解决十进制列的decfloat错误?,db2,Db2,在尝试运行下面的查询时,我收到decfloat错误。根据DX.FACT_规则表的ddl,收入为十进制(18,2) 挑选 收入 来自DX.FACT\u规则 请帮我解决这个问题 我试着改变铸态(收入为DECFLOAT(32))和铸态(DECFLOAT(收入)为DECIMAL(18,2))仍然没有用你可能会遇到这个错误 db2 "values '£101' * 1" 1 ------------------------

在尝试运行下面的查询时,我收到decfloat错误。根据DX.FACT_规则表的ddl,收入为十进制(18,2)

挑选 收入 来自DX.FACT\u规则

请帮我解决这个问题


我试着改变铸态(收入为DECFLOAT(32))和铸态(DECFLOAT(收入)为DECIMAL(18,2))仍然没有用

你可能会遇到这个错误

db2 "values '£101' * 1"

1                                         
------------------------------------------
SQL0420N  Invalid character found in a character string argument of the 
function "DECFLOAT".  SQLSTATE=22018
当你把一个字符串当作一个数字,但是这个字符串不能被转换成一个数字(在这个例子中是DECFLOAT)

您需要找到无法转换为数字的值。这样的函数可用于查找此类值

CREATE OR REPLACE FUNCTION DB_IS_DECFLOAT(i VARCHAR(64)) RETURNS INTEGER
    CONTAINS SQL ALLOW PARALLEL 
    NO EXTERNAL ACTION
    DETERMINISTIC
BEGIN 
  DECLARE NOT_VALID CONDITION FOR SQLSTATE '22018';
  DECLARE EXIT HANDLER FOR NOT_VALID RETURN 0;

  RETURN CASE WHEN CAST(i AS DECFLOAT) IS NOT NULL THEN 1 END;
END
e、 g

哪个会回来

V   
----
£123

您的错误消息是什么?您不能在
DECIMAL
数据类型的
REVENUE
上获得此类错误。它真的是某种字符串数据类型吗?请使用此表提供一些完全可复制的示例,包括
CREATE TABLE
INSERT-INTO
和real
SELECT
。我如何找到罪魁祸首值?我刚刚收到错误“在函数“DECFLOAT”的字符串参数中找到无效字符”。SQLCODE=-420,SQLSTATE=22018,DRIVER=4.21.31”您可以使用上面的my
DB\u IS\u DECFLOAT
函数查找罪魁祸首值。当字符串无法转换为decfloat时,它返回0。如果DX.FACT_RULES是一个视图,则需要查看定义该视图的SQL,以查看将字符串列geting视为数字的位置
V   
----
£123