我是初学者,也是第一次使用sql程序。如果用户没有给参数赋值,它将返回所有项。但我试图根据用户输入添加更多where子句。我知道在sql过程中有if-else语句,但我不知道是否可以追加更多条件。
这是声明
@FirstName varchar (50)
AS
SELECT distinct [user_identity], [first name],
[last name], email, Name, orderdate,RenewalCount, RenewalDate
FROM
db.[dbo].Users,
db.[dbo].[Order],
db.[dbo].[Subscription],
db.[dbo].[Products],
db.[dbo].[Order_Details]
WHERE
db.[dbo].Users.user_identity = db.[dbo].Subscription.userid AND
db.[dbo].Users.user_identity = db.[dbo].[Order].userid AND
db.[dbo].[Order].Orderid = db.[dbo].[Order_Details].OrderId AND
db.[dbo].Products.ProductId = db.[dbo].[Order_Details].Productid AND
db.[dbo].[Order_Details].OD_Id = db.[dbo].[Subscription].OD_Id
//if @firstname is not null and not empty
//append where clause condition
//AND db.[dbo].Users.[first name] = @FirstName
提前致谢!
答案 0 :(得分:1)
你的条件应该是这样的:
WHERE
db.[dbo].Users.user_identity = db.[dbo].Subscription.userid AND
db.[dbo].Users.user_identity = db.[dbo].[Order].userid AND
db.[dbo].[Order].Orderid = db.[dbo].[Order_Details].OrderId AND
db.[dbo].Products.ProductId = db.[dbo].[Order_Details].Productid AND
db.[dbo].[Order_Details].OD_Id = db.[dbo].[Subscription].OD_Id AND
(@FirstName IS NULL OR @FirstName = '' OR db.[dbo].Users.[first name] = @FirstName)
答案 1 :(得分:0)
在你的where条件下附加条件
where @FirstName=case when isnull(@firstname,'')<>'' then db.[dbo].Users.[first name] else @FirstName end