WEB开发网
开发学院数据库MSSQL Server 用SQL完成條件式查詢 阅读

用SQL完成條件式查詢

 2010-04-08 00:00:00 来源:WEB开发网   
核心提示: 如果是以前的我,我會這樣寫,用SQL完成條件式查詢(2),落落長看的都累了,下一個範例展表直接在SQL中作掉,範例二 更方便的寫法 1:stringsql=string.Format("SELECT*FROMSales.SalesOrderDetailWHERE"+2:&qu

如果是以前的我,我會這樣寫,落落長看的都累了,下一個範例展表直接在SQL中作掉。

範例二 更方便的寫法

  1: string sql = string.Format("SELECT * FROM Sales.SalesOrderDetail WHERE" +
  2:               "('{0}' = '' OR SalesOrderID = '{0}') AND " +
  3:               "('{1}' = '' OR ProductID = '{1}') AND " +
  4:               "('{2}' = '' OR ModifiedDate > '{2}') AND " +
  5:               "('{3}' = '' OR ModifiedDate < '{3}')",
  6:               Order.Text, Produce.Text, StartDate.Text, EndDate.Text);

這個方法是不是寫起來簡單,看起來乾淨,其作用為('' = '' OR SalesOrderID = '')參數是空的不查詢,('12345' = '' OR SalesOrderID = '12345')參數不是空的執行查詢。

應用一 SqlDataSource中使用

  1: <asp:SqlDataSource ID="SqlDataSource" runat="server" CancelSelectOnNullParameter="false"
  2: SelectCommand="SELECT * FROM Sales.SalesOrderDetail WHERE
  3:        (@Order IS NULL OR SalesOrderID = @Order) AND 
  4:        (@Produce IS NULL OR ProductID = @Produce) AND 
  5:        (@StartDate IS NULL OR ModifiedDate > @StartDate) AND 
  6:        (@EndDate IS NULL OR ModifiedDate < @EndDate)">
  7: <SelectParameters>
  8:   <asp:ControlParameter ControlID="Order" Name="Order" ConvertEmptyStringToNull="true" />
  9:   <asp:ControlParameter ControlID="Produce" Name="Produce" ConvertEmptyStringToNull="true"/>
 10:   <asp:ControlParameter ControlID="StartDate" Name="StartDate" ConvertEmptyStringToNull="true"/>
 11:   <asp:ControlParameter ControlID="EndDate" Name="EndDate" ConvertEmptyStringToNull="true"/>
 12: </SelectParameters>
 13: </asp:SqlDataSource>

Tags:SQL 完成 查詢

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接