如何在where子句之间使用

时间:2014-01-27 06:44:51

标签: sql-server-2008

亲爱的所有我试图使用where语句与where子句, 如图所示,

select  
  Col1 
from 
  Table
where 
  Col2 between ( case when Col2 ='' or col2 is null then '%' else 'Userinputmin' end) 
and
  ( case when Col2 ='' or col2 is null then '%' else 'Userinputmax' end)

如果用户在col2中输入一个字符值,那么它将从其最大值和最小值中过滤掉,如果用户没有输入任何值,那么我想使用所有值。 感谢您的任何帮助。 问候。

2 个答案:

答案 0 :(得分:0)

隐含@min和@max是参数

IF @min IS NOT NULL AND @max IS NOT NULL
    SELECT * FROM Tbl WHERE col BETWEEN @min AND @max

ELSE
    SELECT * FROM Tbl

由于您是在aspx页面中执行此操作,因此如果您将其放在“后台代码”页面中,这样的内容可能会起作用。

if (min != null && max != null)
{
    sqlcmd.CommandText = "SELECT * FROM Tbl WHERE col BETWEEN " + min + " AND " + max
}
else  
{
    sqlcmd.Commandtext = "SELECT * FROM Tbl"
}

答案 1 :(得分:0)

试试这个

select  
  Col1 
from 
  Table
where 
  (Col2 between 'Userinputmin' AND 'Userinputmax') OR (Col2 Like 'Userinputmin%') OR (Col2 Like 'Userinputmax%')