MySQL例程:
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `INSERT_Employee_Info`(
IN lname varchar(64),
IN fname varchar(64),
IN mname varchar(64)
)
BEGIN
INSERT INTO tbl_employee_info(lname, fname, mname)
VALUES(lname, fname, mname);
END
有时,值lname,fname和mname可能只包含但不为null,我希望insert语句插入NULL
而不是''
值。
我有以下想法但我非常怀疑它会起作用:
INSERT INTO tbl_employee_info(lname, fname, mname)
VALUES(CASE lname WHEN '' THEN NULL ELSE lname END,
CASE fname WHEN '' THEN NULL ELSE fname END,
CASE mname WHEN '' THEN NULL ELSE mname END);
答案 0 :(得分:12)
它会起作用,但你需要在case
INSERT INTO tbl_employee_info(lname, fname, mname)
VALUES
(
(CASE lname WHEN '' THEN NULL ELSE lname END),
(CASE fname WHEN '' THEN NULL ELSE fname END),
(CASE mname WHEN '' THEN NULL ELSE mname END)
);
答案 1 :(得分:4)
您可以使用IF()功能 -
CREATE DEFINER=`root`@`%` PROCEDURE `INSERT_Employee_Info`(
IN p_lname varchar(64),
IN p_fname varchar(64),
IN p_mname varchar(64)
)
BEGIN
INSERT INTO tbl_employee_info(lname, fname, mname)
VALUES(
IF(p_lname = '', NULL, p_lname),
IF(p_fname = '', NULL, p_fname),
IF(p_mname = '', NULL, p_mname));
END
还有一个建议 - 不要对字段名称和参数使用相同的名称。