2010-10-26 51 views
3

靈活的搜索客戶SQL

| p_id | n_name | l_name |地址|城市|狀態| zip |

客戶

| p_id | reward_points |平衡|

Person_PhoneNum

| ppn_id | p_id |數字|

主要問題是,我想嘗試製作一個檢索存儲過程,可以通過任何人的字段以及電話號碼或p_id進行搜索,但我希望它能夠處理來自參數的NULL值。這裏是下面的存儲過程:

CREATE PROCEDURE RetrieveCust(
@p_id AS varchar(50), 
@f_name AS varchar(50), 
@l_name AS varchar(50), 
@address AS varchar(50), 
@city AS varchar(50), 
@state AS varchar(50), 
@zip AS varchar(50), 
@number AS varchar(50)) 

AS 
BEGIN 

END 

我明白,我需要聯接表,以匹配的結果,但我不知道我可以做些什麼來處理空值。任何幫助將是驚人的!

+0

剛剛爲任何需要具體內容的人推測結果: – 2010-10-26 04:18:56

回答

2

在參數設置的任何NULL應符合表中的任何值。當你比較的參數表字段或通過測試的空參數對比:

(@f_name = f_name) or (@f_name is null) 

然後和所有的這些比較起來所構成的檢索。

如果電話號碼爲空時與電話號碼的比較,如果它們具有多個電話號碼,則會導致多行,所以請在p_id上選擇DISTINCT。

客戶與查詢有什麼關係?您沒有選擇該表中的任何字段,並且您似乎沒有從該過程返回任何值。

+0

哈哈,我猜客戶表對於我提出的問題並不需要。不過謝謝你,我有一種感覺,那就是那種直截了當的感覺。 – 2010-10-26 04:07:38

+0

很好的答案,比我的更具描述性和信息量,我更好地解除我的遊戲! – campo 2010-10-27 02:55:34

1

您的where語句可以是這樣的

where (f_name = @f_name or @f_name is null)