MySQL:在程序中使用 "IF NOT IN"

标签 mysql sql stored-procedures

我正在尝试使用 MySQL 过程检查 class,但以下过程总是返回 0:

DELIMITER //
CREATE PROCEDURE `validate_class`(IN `class` INT)
BEGIN
    if(class NOT IN  ('A','B','E') ) then    
         select 1;
    else
         select 0;
    end if;
END //
DELIMITER ;

调用测试:

call validate_class('G'); //return 0
call validate_class('A'); //return 0

当类不是(ABE)时它应该返回1,任何帮助?

最佳答案

您有隐式转换 CHAR -> INT -> CHAR

更改参数数据类型:

CREATE PROCEDURE `validate_class`(IN `class` CHAR(1))
BEGIN
    if(class NOT IN  ('A','B','E') ) then    
         select 1;
    else
         select 0;
    end if;
END 

SqlFiddleDemo

关于MySQL:在程序中使用 "IF NOT IN",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35674509/

相关文章:

android - 更新行而不是创建新条目数据库android

sql - PostgreSQL - 检查值是否等于枚举值

mysql - mysql中的ERROR 1064,任何人都可以检查错误是什么?

php - 如何使用 PHP 将阿拉伯语文本从 HTML 表单正确地存储到 MySQL 数据库中?

MySQL 如果两个日期和时间之间相差 2 小时

mysql - 使用可变数量的 IN (p1, p2, p3) 参数的动态查询

sql - SSIS将datetime列导入SQL Server 2008

mysql根据变量(存储过程)更新不同的行

SQL Server 2008 : Joining results of STORED PROCEDURE (dynamic columns) with results of a SELECT statement

mysql - 为什么使用 CHAR/VARCHAR 索引时 MySQL 查询的性能如此糟糕?