gpt4 book ai didi

MySql 函数没有返回正确的结果

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:15 25 4
gpt4 key购买 nike

我试图在 mysql 中创建一个函数,如果该 id 已经存在于表中,它将返回 bool 值。我在网上找到的大多数解决方案都需要同时使用 php 和 mysql 的解决方案,但我想做的是一个纯 mysql 的函数形式的解决方案。

我简化后的 mysql 表如下:

CREATE TABLE IF NOT EXISTS table1 (
`user_id` VARCHAR(12) UNIQUE,
`name` VARCHAR(128),
PRIMARY KEY (`user_id`)
);

我的第一次尝试如下:

DELIMITER *
DROP FUNCTION IF EXISTS CheckExistId*
CREATE FUNCTION CheckExistId (user_id VARCHAR(12)) RETURNS BOOL
BEGIN
DECLARE isExist BOOL;
SET isExist = 0;
SELECT EXISTS(SELECT * FROM table1 WHERE `user_id`=user_id) INTO isExist ;
RETURN isExist;
END*
DELIMITER ;

我的第二次尝试:

DELIMITER *
DROP FUNCTION IF EXISTS CheckExistId*
CREATE FUNCTION CheckExistId (user_id VARCHAR(12)) RETURNS BOOL
BEGIN
DECLARE isExist BOOL;
DECLARE countRow INT;
SELECT COUNT(`user_id`) INTO countRow FROM table1 WHERE `user_id`=user_id;
IF countRow = 0 THEN SET isExist = 1;
ELSE SET isExist = 0;
END IF;
RETURN isExist;
END*
DELIMITER ;

两者都没有给我预期的结果。有关如何解决此问题的任何建议?

最佳答案

您的第一次尝试非常好,除了您使用 * 作为分隔符并为您的参数和列名称使用相同的名称。这让 MySQL 很困惑。像这样写:

DELIMITER $$
DROP FUNCTION IF EXISTS CheckExistId $$
CREATE FUNCTION CheckExistId (p_user_id VARCHAR(12)) RETURNS BOOL
BEGIN
DECLARE isExist BOOL;
SET isExist = 0;
SELECT EXISTS(SELECT * FROM table1 WHERE `user_id`=p_user_id) INTO isExist ;
RETURN isExist;
END $$
DELIMITER ;

关于MySql 函数没有返回正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18374154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com