sql-server - SQL Server 使用大小写动态添加条件
问题描述
在我的 SQL Server 存储过程中,我想添加一个Where
动态子句,如下所示:
AND CASE WHEN @mySt <> '' THEN s.myStatus IN(@mySt) ELSE 0=0 END
当我要检查的是:如果@mySt
不为空,我要添加s.myStatus IN(@mySt)
.
如果 if@mySt
为空,我想跳过这个where
子句。
我收到一个错误
'IN' 附近的语法不正确
解决方案
CASE
是一个表达式,它返回一个标量值而不是布尔结果;你不能想要你想要做的,因为s.myStatus IN(@mySt)
它不是一个标量值。
使用正确的布尔逻辑:
AND (s.myStatus = @mySt OR @mySt IS NULL) --I suggest NULL over a blank string
我替换IN
为=
, as@mySt
是一个标量值,所以IN
和=
将是同义词。
推荐阅读
- php - 如何更新购物车 cookie 中存储的产品数量?
- c++ - 我是否应该检查并释放 VLA 类的分配运算符 (operator=) 中的指针
- nuxt.js - 如何在现有 Nuxt.js 项目中从 eslint-config-prettier 切换到 prettier-eslint?
- sql - SQL - 替换 SQL 字符串中的字符
- python - 如果 pandas python 中所有行的条件都不起作用
- python - 如何在python中解码JSON文件并获取特定的密钥
- c# - 如何使用 C# 在 Windows 应用程序中使用 SaveFileDialog 在来自 HttpClient 的本地计算机上保存 Zip 文件?
- ms-office - Excel Open XML - 黑底白字 - 颜色在哪里定义?
- reactjs - 在移动视图中,为什么抽屉没有从反应钩子中的 appBar iconButton (material-ui) 打开?
- installation - 在 Inno Setup 的屏幕中央显示启动画面