回答

收藏

SQL-WHERE中的CASE表达式

技术问答 技术问答 271 人阅读 | 0 人回复 | 2023-09-13

我在这里读了关于它的知识WHERE子句中使用CASE表达式信息:
# i. ?% t; c) O  A4 p& thttp://scottelkin.com/sql/using-a-case-statement-in-a-sql-where-
) Q) m2 ]! C% t2 L* B% Aclause/
/ M( d! e, n8 _6 Q: ?6 Q! [3 L/ S我正试图根据合同编号(合同编号将由用户的应用程序传递)从我那里使用这种方法select在句子中过滤结果。无论输入什么,我的代码目前都会导致无效参数错误。我已经验证了SELECT2 w6 W9 f0 l1 P# _8 b
/ FROM正常工作就像没有一样CASE表达式的WHERE同样的句子。这是我的代码。+ _. A# T4 B1 S7 ?, F. W7 f5 l
WHERE     (CASE WHEN @ContractNo = 0 THEN @ContractNo ELSE @ContractNo END =tblContracts.ContractNo)代码的冗余是出于故障诊断的目的,我计划稍后在CASE上使用通配符过滤。我现在专注于简化语法。我相信这应该返回参数与表中存储的合同编号匹配的所有记录。任何帮助或建议,将不胜感激。
2 U% p8 \" D! t6 A8 M8 \6 N; p                                                               
5 y. }; z: u, {8 c! h    解决方案:                                                               
/ z5 v+ k6 i+ x4 o- E( L7 q7 g" p                                                                阅读您的解释后,有一种更好的方法,而无需执行以下操作CASE:- ~- r& ^# _4 X: x3 ?. t/ Y& m
WHERE @ContractNo = 0 OR tblContracts.ContractNo = @ContractNo除非只返回匹配的合同编号,否则只会返回匹配的合同编号@ContractNo在这种情况下,它将返回所有记录。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则