我有一张桌子,我正在通过5个参数
table name=" image"
parameter
@imageID,
@imageName,
@imageDirectory,
@imageResource,
从前端[来自文本框控件的页面]如果他们没有向存储过程发送任何值,那么我应该做一个简单的查询 条件1:
select * From image
条件2: 如果他们向上述参数发送任何值 然后根据参数发送
收集这些值并检索结果条件3: 在这里,他们可能会将值发送到任何参数 在该条件中选择该参数的值。对于他们没有发送值的参数,我们可以发送'null'或''
所以基于那个反复的结果
那么如何为这样的条件写一个存储过程。处理所有三个条件
任何帮助真的很棒 谢谢
答案 0 :(得分:5)
尝试以下几点:
SELECT * FROM IMAGE i
WHERE 1=1
AND (@ImageID IS NULL OR i.ImageId = @ImageID )
AND (@ImageName IS NULL OR i.ImageName = @ImageName )
AND (@ImageDirectory IS NULL OR i.ImageDirectory = @ImageDirectory)
AND (@ImageResource IS NULL OR i.ImageResource = @ImageResource)
答案 1 :(得分:0)
您还可以使用IsNull
(特定于transact-SQL)或Coalesce
(SQL-92标准)函数,如:
Select * From Table
Where imageId = Coalesce(@ImageId, imageId)
And imageName = Coalesce(@imageName,imageName)
etc.