MySQL程序,基于标识号的女性或男性

时间:2019-11-24 12:08:38

标签: mysql procedure

我想根据识别码确定一个人是男性还是女性。识别码为int(11),其第一个数字指定是男性还是女性。例如,以2、4、6和8开头的代码是女性,而1、3、5和7是男性。 我现在拥有的(参数是in_ik int(11):

BEGIN

DECLARE s VARCHAR(20) DEFAULT '';

IF LEFT(in_ik, 1) % 2 = 0 THEN
    SET s = "female";
ELSEIF LEFT(in_ik, 1) % 2 != 0 THEN
    SET s = "Male";
ELSE
    SET s = "Other";
END IF;
SELECT s;

END

我测试该程序时,每次都说是女性。 procedure code

2 个答案:

答案 0 :(得分:1)

并不奇怪,当传递11位数字时此操作会失败,请参见https://dev.mysql.com/doc/refman/8.0/en/integer-types.html以获取整数的最大大小(顺便说一句(11)表示最大显示大小为11,不存储为11位整数)我建议您更改in_ik到大整数。实际上,当我尝试按原样运行此代码时,我得到了一个错误。

答案 1 :(得分:0)

如果检查对(女)和奇数(男),则可以直接使用MOD()(或整数除法%),而不要使用左1(左是用于字符串而不是整数)

BEGIN

DECLARE s VARCHAR(20) DEFAULT '';

IF MOD(in_ik, 2)= 0 THEN
    SET s = "female";
ELSE
    SET s = "Other";
END IF;
SELECT s;

END