回答

收藏

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

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

如何查询列中的任何值?(即,我如何构建一个动态的where子句,该子句可以过滤值,也可以不过滤值。)6 ^% T4 M( b$ ^/ `7 V( o
我希望能够查询一个特定的值或没有。例如,我可能希望该值为1,但我可能希望其为任何数字。  m+ S+ F4 S. C" D
有没有一种方法可以使用通配符(例如“ *”)来匹配任何值,以便可以将其动态插入到我不需要过滤器的地方?
( b# I/ p# @3 J6 c& W8 U" g例如:3 Z$ I" D3 ~/ y
select int_col from table where int_col = 1  // Query for a specific value
' C) u! k4 G8 p: P+ X! y: |select int_col from table where int_col = *  // Query for any value# Y1 G2 X  V+ I6 D
我不想使用2条单独的SQL语句的原因是因为我将其用作SQL数据源,它只能有1条select语句。
7 R% g8 P0 ^5 B; O- l# R' u               
4 O; ]9 T1 G) P4 W' |: \9 H解决方案:# j( W! _, U( ~2 C
                / Y7 P0 I& d! Z

' y8 Q! J8 O* U- W9 H  O( j3 Q4 \
! p7 C" @! z& j  L) f3 O5 ]2 O) s                2 `* _3 d3 u# \; c- b$ ]0 W
有时我会查询实际值(例如1、2 …),所以我也不会有条件。3 Q2 Y3 F+ G- I/ E* [

: s" d. ^" E, Q. _0 w5 V( r我想你想你的一些动态的行为WHERE条款,而不必动态地 建立 您的WHERE条款。
8 Q+ X! Z6 t+ i6 F5 z9 D使用单个参数,您可以像这样使用ISNULL(或COALESCE):
$ \" z! W5 v" _  ~# _5 ] SELECT * FROM Table WHERE ID = ISNULL(@id, ID)
$ P0 k) @6 Y$ L允许NULL参数匹配所有参数。有些人更喜欢更长但更明确的信息:
7 L" ?2 F# W; R2 B; A/ T SELECT * FROM Table WHERE (@id IS NULL) OR (ID = @id)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则