为什么这个函数会返回多个值?
DELIMITER $$
create function check_or_alter_pwd(name VARCHAR(255),pwd VARCHAR(255),newpwd VARCHAR(255),act INT) returns boolean
begin
declare pawd VARCHAR(255);
SELECT passwd INTO @pawd FROM acount WHERE user_name = name;
IF @pawd IS NULL OR @pawd != pwd THEN
SELECT 'Invalid username or password';
return False;
end if;
IF act = 1 THEN
SELECT 'Login successful';
return True;
ELSEIF act = 2 THEN
IF CHAR_LENGTH(newpwd) < 4 OR CHAR_LENGTH(newpwd) > 10 OR NOT(newpwd REGEXP '^[a-zA-Z0-9]+$') THEN
SELECT 'Invalid new password';
return False;
else
UPDATE acount SET passwd = newpwd WHERE user_name = name;
SELECT 'Password changed successfully';
return True;
end if;
ELSE
SELECT 'Invalid action';
return False;
END IF;
end $$
DELIMITER ;
报错是这个
把所有的select 字符串注释掉
1.编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中包含toy一词的产品。
SELECT prod_name,prod_desc
FROM products
WHERE prod_name LIKE '%toy%';
2.反过来再来一次。编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中未出现toy一词的产品。这次,按产品名称对结果进行排序。
SELECT prod_name,prod_desc
FROM products
WHERE prod_name NOT LIKE '%toy%'
order by prod_name;
where not prod_name like '%toy%'也是正确的语法
3.编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中同时出现toy和carrots的产品。有好几种方法可以执行此操作,但对于这个挑战题,请使用AND和两个LIKE比较。
SELECT prod_name,prod_desc
FROM products
WHERE prod_desc LIKE '%toy%'
AND prod_desc LIKE '%carrots%';
4.来个比较棘手的。我没有特别向你展示这个语法,而是想看看你根据目前已学的知识是否可以找到答案。编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回在描述中以先后顺序同时出现toy和carrots的产品。提示:只需要用带有三个%符号的LIKE即可。
SELECT prod_name,prod_desc
FROM products
WHERE prod_desc LIKE '%toy%carrots%';