SQL if语句具有未知值

时间:2013-07-14 20:56:11

标签: mysql sql variables if-statement

我有一种情况,我应该从数据库中提取客户的文件并在找到他们的文件后返回密码,但如果找不到输入的客户ID,我将返回“没找到。“

我试图将其设置为if语句,如下所示:      如果$ customerID =任何东西           返回密码;

然而,我不确定我将把“任何东西”作为代码的真实部分进行分配。有没有办法做到这一点,还是应该重新评估我完全按照这种方式进行的方式?

2 个答案:

答案 0 :(得分:1)

您可以使用IFNULL来执行此类操作,但实际上,最好在代码中检测NULL并处理“无用户”条件。

SELECT IFNULL(password, 'NOT FOUND') AS password 
FROM yourtable 
WHERE customerid=XXX;

正如其他人所指出的那样,问题在于你无法区分缺失的用户记录与使用“未找到”作为密码的用户记录。这个的含义可能是良性的,但也可能导致未来的可利用条件。在检查用户输入时,不要信任:)

答案 1 :(得分:0)

您可以使用子查询和coalesce()在SQL中执行此操作。以下是对您的数据结构的猜测,但它显示了在找不到任何内容时如何返回NOT FOUND

select coalesce((select f.password
                 from files f
                 where f.customerId = $CustomerId
                ), 'NOT FOUND')

注意:这假定最多一个文件具有给定的客户ID。如果没有,它将返回一个错误,例如“子查询返回多个值”。