sql - SQL 可选参数
问题描述
我正在努力在 MS SQL 2017 中设置可选参数。它应该这样做:
- 如果参数为空,则忽略该条件,但应用其他条件
- 如果设置了参数,则应用条件
下面的代码仅在设置参数时有效,但如果参数为空,则不显示任何结果。
DECLARE @ShowBenefitsValidatedAfter Date
--SET @ShowBenefitsValidatedAfter = NULL
SET @ShowBenefitsValidatedAfter = DATEADD(month, -1, GETDATE())
WHERE @ShowBenefitsValidatedAfter < IIF(@ShowBenefitsValidatedAfter IS NULL, @ShowBenefitsValidatedAfter, B.BenefitValidationActualDate)
AND B.Status <> 'Cancelled'
你能告诉我,如何修改条件,好吗?
非常感谢!
解决方案
这通常表示为:
WHERE (@ShowBenefitsValidatedAfter IS NULL OR
B.BenefitValidationActualDate > @ShowBenefitsValidatedAfter
) AND
B.Status <> 'Cancelled'
几乎所有的比较NULL
都将是NULL
,包括<
。你从比较开始@ShowBenefitsValidatedAfter
,所以结果将是NULL
。
推荐阅读
- ios - 如何在IOS原生分享中添加应用图标?
- javascript - 使用循环在 React 应用程序中的 Redux 中向数组添加元素的问题
- variables - Julia - 如何正确连接未定义的变量
- firebase - Streambuilder 中的动画以显示 Firebase 内容
- python - swagger-codegen 不会为嵌套对象生成模型
- reactjs - 将渲染的组件输出发送到后端
- php - 在 Laravel 中模拟时抛出 RequestException 的实例
- python - python中的平均局数
- android - Android WebView setMediaPlaybackRequiresUserGesture(false) 只工作一次
- c - 使用 C 中的循环对前 n 个数字(从 1 到 n)求和