是否可以将值传递给存储过程以告诉它是否在SQL SELECT语句后附加OR语句?
我已经尝试过类似的方法,但这是无效的:
SELECT xyzName
FROM xyz_fields
WHERE (xyzType = 'this') UNION ALL
(if @status=1 OR (xyzType = 'that')) UNION ALL
(if @status2=1 OR (xyzType = 'somethingelse'))
有点像在SQL中建立WHERE子句,而不是再次从应用程序访问数据库?
最佳答案
您可以为此使用动态SQL。
declare @SqlQuery varchar(100)
Set @SqlQuery = ' SELECT xyzName FROM xyz_fields WHERE xyzType = ''this'' '
if(@status=1)
Set @SqlQuery = @SqlQuery + ' OR xyzType = ''that'' '
if(@status2=1)
Set @SqlQuery = @SqlQuery + ' OR xyzType = ''somethingelse'''
exec(@SqlQuery)
查询中的单个qoutes通过为另一个单个qoute加上前缀来转义。
所以在查询
WHERE xyzType = 'this'
应该
WHERE xyzType = ''this''
关于sql - SQL WHERE子句中的IF语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16670414/