2013-06-25 133 views
1

“东西”我有这样的代码:由插入ID公司的返回,而不是空

select f.name 
from Firms F 
where 
f.id = @{_firmID} 

代码选择名称。但是如果我插入坏ID(不存在ID),表返回null。例如,如果id不存在,我需要重写此代码以返回“错误的ID”。 我该如何做到这一点?感谢所有回复

+0

查询本身没有返回null,它根本不返回任何行。你得到null取决于你如何处理查询结果。 –

回答

1

未经检验的语法,但你的想法,我希望:

select f.name 
from Firms F 
where 
f.id = @{_firmID} 
union 
select 'wrong ID' as name 
from firms 
where @{_firmID} 
not in (select id from firms) 
+0

工程很棒。谢谢。 – Sk1X1

0

如果你真的想用SQL做到这一点,而不是在应用端,然后使用可选的存储过程也许是最简单的方法:

CREATE PROCEDURE GetFirmName(aID INTEGER) 
RETURNS(Name VARCHAR(255)) 
AS 
BEGIN 
    Name = NULL; 
    SELECT Name FROM Firms WHERE id = :aID INTO :Name; 
    IF(Name IS NULL)THEN Name = 'wrong ID'; 
END 

然后

SELECT Name FROM GetFirmName(42); 
+0

我不能在应用程序方面做到这一点。我只对SQL有访问权限。 我只有一种情况下有这个问题,所以存储过程没有必要,但谢谢。 – Sk1X1