DB2:创建函数 - 缩放

DB2: Create Function - Scale

我有一个 table popo:

无|Id|值。

1|X|321225.4775 -> Scale:4.

2|Y|321235.2115 -> Scale:4.

3|Z|12123.12321 -> Scale:5.

4|一个| -> 空。

5|B|12321 -> Scale:0.

我想在第 "Values" 列有一个比例 > 4 的数据时进行标记。 下面是我当前的函数脚本。

CREATE OR REPLACE
FUNCTION "SCHEME"."VALIDATION01" (A VARCHAR(500)) RETURNS INT
LANGUAGE SQL
BEGIN
DECLARE ASD DEC;
DECLARE A DEC;
SET ASD = CAST(A AS DEC(20,4));
IF A = ASD THEN RETURN NULL;
ELSEIF A IS NULL THEN RETURN NULL;
ELSE RETURN 1;
END IF;
END

输出:

[null]
[null]
[null]
[null]
[null]

我想要的输出是:

[null]
[null]
1
[null]
[null]

你能帮帮我吗?

尝试以下操作:

CREATE OR REPLACE
FUNCTION "SCHEME"."VALIDATION01" (A VARCHAR(500)) RETURNS INT
LANGUAGE SQL
RETURN CASE WHEN A <> DEC(A, 20, 4) THEN 1 END;

CASE 语句 returns 1、如果A IS NOT NULL AND 原始值不等于此值,则强制转换为DECIMAL(20, 4) 数据类型。它 returns NULL 否则。
用户有责任使用正确的字符串参数调用此函数以避免字符串到数字数据类型转换错误。