gpt4 book ai didi

MySQL:基于 if 语句进行 null 检查

转载 作者:行者123 更新时间:2023-11-29 12:24:20 25 4
gpt4 key购买 nike

我有这个程序:

DELIMITER //
CREATE PROCEDURE add_package(nam VARCHAR(255), pack_id INT, lib_id INT, descrip TEXT)
BEGIN
DECLARE ind INT;
DECLARE `_rollback` BOOL DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET `_rollback` = 1;
START TRANSACTION;
INSERT INTO java_master (name, description) VALUES (nam, descrip);

SET ind = (SELECT id FROM java_master WHERE name = nam AND description = descrip);

INSERT INTO java_package (master_id, parent_package_id, library_id) VALUES (ind, pack_id, lib_id);
IF `_rollback` THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END //
DELIMITER ;

我需要使中间的 set 语句都返回 java_master 表中的 id,即使描述为空值...有关的任何建议我怎样才能做到这一点?

最佳答案

由于您没有为“id”列提供值,因此我将假设您的 id 是一个自动递增值。

--我想象中你的 table 是什么样子的?显示创建表 java_master;

CREATE TABLE java_master (id INTEGER PRIMARY KEY AUTO_INCREMENT, name CHAR(10), description VARCHAR(200));

-- 插入 null 的示例

INSERT INTO java_master(name, description)
VALUES("class", NULL);

-- 如果是这种情况,您应该使用 LAST_INSERT_ID() 来获取表的最后创建的自动递增值。将 ind 设置为此。

SELECT LAST_INSERT_ID();

如果你坚持按照自己的方式去做,那么我想你可以这样做:

SELECT id FROM java_master WHERE name = nam AND IFNULL(description, "") = IFNULL(descrip, "");

http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_last-insert-id

关于MySQL:基于 if 语句进行 null 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28569234/

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