2013-06-25 129 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