回答

收藏

如何查询int列中的任何值?

技术问答 技术问答 557 人阅读 | 0 人回复 | 2023-09-14

如何查询列中的任何值?(即,我如何构建一个动态的where子句,该子句可以过滤值,也可以不过滤值。)2 j& m/ A7 |+ K2 ?6 A
我希望能够查询一个特定的值或没有。例如,我可能希望该值为1,但我可能希望其为任何数字。* u: ?+ C8 q( ]" S
有没有一种方法可以使用通配符(例如“ *”)来匹配任何值,以便可以将其动态插入到我不需要过滤器的地方?7 v+ X( N! G" f: b8 U/ I! {, v
例如:" X* @2 C+ a+ r9 Q
select int_col from table where int_col = 1  // Query for a specific value# M. p/ Z) l0 V1 N" G
select int_col from table where int_col = *  // Query for any value
4 x, S6 ~4 c$ j5 k$ `2 @我不想使用2条单独的SQL语句的原因是因为我将其用作SQL数据源,它只能有1条select语句。9 V7 a8 `: Y2 v) A( R9 p
               
$ `0 Q: i. P7 `- e' @& `* y) E2 o解决方案:
% `' ]" F5 H9 o( a7 v% ~               
6 A$ \; S- r  K* L* }4 b4 _% t9 d1 v" h# d

. O! |* i$ F; W, N7 G/ h               
2 n2 P' \# o/ m, l6 Z( H% y8 ^有时我会查询实际值(例如1、2 …),所以我也不会有条件。+ I# r8 p# t+ ~
. e4 G4 J# j$ ]3 {
我想你想你的一些动态的行为WHERE条款,而不必动态地 建立 您的WHERE条款。& A# u5 H" g/ r8 l% Q; p
使用单个参数,您可以像这样使用ISNULL(或COALESCE):. A4 l- I* G. d9 v; a5 C- f
SELECT * FROM Table WHERE ID = ISNULL(@id, ID)- @- b3 a' C* s0 k' }
允许NULL参数匹配所有参数。有些人更喜欢更长但更明确的信息:
( ~8 {. \! c- O( I SELECT * FROM Table WHERE (@id IS NULL) OR (ID = @id)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则