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

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)


Cap*_*Bli 6

一个简单的答案是使用:IS NOT NULL.但是如果你要求对123456或1234或1237这样的数字说123*那么你可以将它转换为varchar然后测试使用标准通配符.

在你的where子句中:cast(myIntColumn as varchar(15)) like '123%'.