我想根据识别码确定一个人是男性还是女性。识别码为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
答案 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