Bil*_*ill 17 sql t-sql select sql-server-2008
如何在列中查询该列中的任何值?(即.如何构建一个可以过滤值的动态where子句.)
我希望能够查询特定值或不查询.例如,我可能希望值为1,但我可能希望它是任何数字.
有没有办法使用通配符(如"*"),以匹配任何值,以便它可以动态插入我想要没有过滤器的地方?
例如:
select int_col from table where int_col = 1 // Query for a specific value
select int_col from table where int_col = * // Query for any value
Run Code Online (Sandbox Code Playgroud)
我之所以不想使用2个单独的SQL语句,是因为我将它用作SQL数据源,它只能有1个select语句.
Mar*_*ett 40
有时候我会查询实际值(比如1,2 ......),所以我也不能有条件.
我认为你需要在你的WHERE子句上有一些动态行为,而不必动态构建你的WHERE子句.
使用单个参数,您可以使用ISNULL(或COALESCE)像这样:
SELECT * FROM Table WHERE ID = ISNULL(@id, ID)
Run Code Online (Sandbox Code Playgroud)
它允许NULL参数匹配所有.有些人更喜欢更长但更明确:
SELECT * FROM Table WHERE (@id IS NULL) OR (ID = @id)
Run Code Online (Sandbox Code Playgroud)
一个简单的答案是使用:IS NOT NULL.但是如果你要求对123456或1234或1237这样的数字说123*那么你可以将它转换为varchar然后测试使用标准通配符.
在你的where子句中:cast(myIntColumn as varchar(15)) like '123%'.
| 归档时间: |
|
| 查看次数: |
68764 次 |
| 最近记录: |