我正在进行动态查询,如果参数值为false,我需要在查询中添加一列。
// SQL:
SET @FilterExp = 'SELECT * from tblName where ptblnFlag = '+Convert(varchar(2),@blnFlag)+') as tbl where 1=1'+ COALESCE(NULLIF( CONVERT(varchar(8000), @FilterExp),''), '')
在上面的查询中,我需要检查@blnFlag
是否为false,然后可以在where条件中添加列。如果是真的,就不必在那里。
如果条件为false,它应返回所有值,如果为true,则结果集基于条件。
答案 0 :(得分:1)
您只需要AND/OR
运算符,此处不需要Dynamic query
SELECT *
FROM tblName
WHERE ( ptblnFlag = @blnFlag
AND @blnFlag = 0 )
OR @blnFlag = 1
变量名称可能出错,但逻辑相同