人
| p_id |姓名 |我的名字 |地址 |城市 |状态 |压缩 |
客户
| p_id |奖励积分|余额 |
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
我知道我需要连接表才能匹配结果,但我不知道我可以做些什么来处理 NULL 值。任何帮助都会很棒!
最佳答案
参数中的任何 NULL 都应匹配表中的任何值。每当您将参数与表字段进行比较或与 null 参数的测试进行比较时:
( @f_name = f_name ) or ( @f_name is null )
然后将所有这些比较一起构成您的检索。
当电话号码为 null 时,如果他们有多个电话号码,则与电话号码的比较将导致不止一行,因此在 p_id 上选择 DISTINCT。
客户与查询有什么关系?您没有在该表中的任何字段上进行选择,并且您似乎没有从过程中返回任何值。
关于sql - 灵活搜索客户SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4020192/