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

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

如果你检查 pair (female) 和 odd (male) 你可以直接使用 MOD() (或整数除法 %)而不是 left 1 (left 是字符串而不是整数)

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

当传递一个 11 位数字时失败并不奇怪,请参阅 https://dev.mysql.com/doc/refman/8.0/en/integer-types.html 了解整数的最大大小(顺便说一句 (11) 表示最大显示大小为 11 而不是存储为 11 位整数)我建议你将 in_ik 更改为大整数。事实上,当我尝试按原样 运行 这段代码时出现错误..