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)
有任何想法吗?
你想要做的是计算.%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
如果您使用的是整数类型(bigint,integer,等),如i您应该能够使用
(i & 0x1)=>1(i & 0x1)=>0完整说明:
UPDATE `test` SET `d` = IF ( ( `i` & 0x1 ) = 1, 'Odd', 'Even' );
Run Code Online (Sandbox Code Playgroud)