我正在尝试在MySql中创建一个存储过程,它将根据性别参数返回所有用户,这是我的代码:
DELIMITER $$
USE `my_database`$$
DROP PROCEDURE IF EXISTS `GET_ALL_USERS`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `GET_ALL_USERS`(IN IN_GENDER CHAR)
COMMENT 'Get All Users'
BEGIN
SELECT
*
FROM
users
WHERE
gender = IN_GENDER;
END$$
DELIMITER;
当参数设置为“f”或“m”时,此代码有效。如果未设置性别参数,则不返回任何内容。我想要的是如果没有设置性别参数,它将返回所有用户。我应该为性别参数设置什么值以获取所有用户?请帮助谢谢
答案 0 :(得分:0)
脱离我的头顶,没有经过测试......
试试这样:
gender LIKE CASE WHEN IN_GENDER='' THEN '%' ELSE IN_GENDER END AS MOD_IN_GENDER;
或者像这样:
gender LIKE COALESCE(IN_GENDER, '%')