MySql过程IF编号为奇数或偶数

Use*_*r_T 2 mysql if-statement procedure

我的学习mysql和我的问题是检查我在这里做错了什么:

我正在尝试制作一个sql程序来检查用户输入的一个数字是奇数还是偶数但是我在第9行附近获得语法错误'; //'

这是sql:

MYSQL>
DELIMITER //

CREATE PROCEDURE num()
BEGIN
IF (SELECT LEFT(num,1))=1 OR (SELECT LEFT(num,1))=3 OR (SELECT LEFT(num,1))=5 OR (SELECT LEFT(num,1))=7 THEN
SELECT 'number is odd';
ELSEIF (SELECT LEFT(num,1))=2 OR (SELECT LEFT(num,1))=4 OR (SELECT LEFT(num,1))=6 OR (SELECT LEFT(num,1))=8 THEN
SELECT 'number is even'; 
END IF;

END;//
Run Code Online (Sandbox Code Playgroud)

以下是用于测试的CALL:

MYSQL> CALL num(3123123123) 
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Joh*_*ell 8

你想要做的是计算.%2将给出除数的余数2.如果该余数不为0,那么它是奇数

SELECT IF(LEFT(num, 1) % 2 <> 0, "number is odd", "number is even")
Run Code Online (Sandbox Code Playgroud)

你也想把你的程序修复成这样的东西

DELIMITER //
CREATE PROCEDURE `num`( IN input_num int, OUT output varchar(200))
    BEGIN
        SELECT IF(LEFT(input_num, 1) % 2 <> 0, "number is odd", "number is even") INTO output;
    END//
Run Code Online (Sandbox Code Playgroud)

你会这样称呼它.

set @a = '';
call num(333, @a);

select @a;
Run Code Online (Sandbox Code Playgroud)

演示小提琴


小智 5

如果您使用的是整数类型(bigintinteger,等),如i您应该能够使用

  • 奇数:(i & 0x1)=>1
  • 偶数:(i & 0x1)=>0

完整说明:

UPDATE `test` SET `d` = IF ( ( `i` & 0x1 ) = 1, 'Odd', 'Even' );
Run Code Online (Sandbox Code Playgroud)