繁体   English   中英

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

[英]MySQL procedure, female or male based on identification number

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

当我测试程序时,它每次都说它是女性。 程序代码

当传递 11 位数字时,这会失败并不令人惊讶,请参阅https://dev.mysql.com/doc/refman/8.0/en/integer-types.html以了解整数的最大大小(顺便说一句(11)表示最大显示size is 11 not store as 11 digit integer)我建议你把in_ik改成big int。 事实上,当我尝试按原样运行此代码时出现错误。

如果您检查对(女性)和奇数(男性),您可以直接使用 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM