0

これは基本的に、それらを加算して合計を 10 倍する 2 つの数値を取得する私のクエリです。

DELIMITER $$
CREATE FUNCTION tot(a int(4),b INT(4)) RETURNS INT(4)
BEGIN
RETURN ROUND((a+b)*10/9);
END $$
DELIMITER ;

すべて正常に動作していますが、入力された値のいずれかが null であるかどうかをチェックする IF ELSE を追加できる方法があるかどうか疑問に思っていました。その場合、null 値にはゼロの値が割り当てられます。

これを試しましたが、エラーが発生します

DELIMITER $$
CREATE FUNCTION tot(a int(4),b INT(4)) RETURNS INT(4)
BEGIN
IF (a = "") then
a=0;
ELSE IF (b = "")
b=0;
ELSE
END IF;
RETURN ROUND((a+b)*10/9);
END $$
DELIMITER ;
4

1 に答える 1

2

入力された値のいずれかが null であるかどうかをチェックする IF ELSE を追加できる方法があるかどうか疑問に思っていました。その場合、null 値にはゼロの値が割り当てられます。

coalesce()パラメータにデフォルトを割り当てるために使用できnullます:

DELIMITER $$
CREATE FUNCTION tot(a int(4),b INT(4)) RETURNS INT(4)
BEGIN
    RETURN ROUND((COALESCE(a, 0) + COALESCE(b, 0)) * 10 / 9);
END $$
DELIMITER ;
于 2020-09-10T21:08:59.107 に答える