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

用SQL完成條件式查詢

 2010-04-08 00:00:00 来源:WEB开发网   
核心提示: 用這個方式,在DataSource中也可以做到DataSource條件式查詢,用SQL完成條件式查詢(3),使用CancelSelectOnNullParameter=”false”,不管有沒有結果都要執行,為了方便多少會犧生一些效能,能不能接受,因為設定ConvertE

用這個方式,在DataSource中也可以做到DataSource條件式查詢,使用CancelSelectOnNullParameter=”false”,不管有沒有結果都要執行,因為設定ConvertEmptyStringToNull="true",所以SQL中也可以使用(@Order IS NULL OR SalesOrderID = @Order)

應用二 StoreProcedure中使用

  1: CREATE PROCEDURE SearchSalesOrderDetail
  2:   @Order varchar(10) = null ,
  3:   @Produce varchar(10) = null,
  4:   @StartDate datetime = null,
  5:   @EndDate datetime = null
  6: AS
  7: BEGIN
  8: SELECT * FROM Sales.SalesOrderDetail WHERE
  9: (@Order IS NULL OR SalesOrderID = @Order) AND 
 10: (@Produce IS NULL OR ProductID = @Produce) AND 
 11: (@StartDate IS NULL OR ModifiedDate > @StartDate) AND 
 12: (@EndDate IS NULL OR ModifiedDate < @EndDate)
 13: END
 14: GO

當然也可以寫成Store Procedure直接在資料庫操作。

效能測試

各位最擔心的還是效能,就測試結果來說效能比較差,不過這樣物件導向是一樣的,為了方便多少會犧生一些效能,能不能接受,就看各位了。

EXEC dbo.SearchSalesOrderDetail NULL,NULL,NULL,NULL

用SQL完成條件式查詢

查看原图(大图)

SELECT * FROM Sales.SalesOrderDetail

用SQL完成條件式查詢

查看原图(大图)

EXEC dbo.SearchSalesOrderDetail '43659','776'

用SQL完成條件式查詢

查看原图(大图)

SELECT * FROM Sales.SalesOrderDetail WHERE SalesOrderID = '43659' AND ProductID = '776'

用SQL完成條件式查詢

查看原图(大图)

上一页  1 2 3 

Tags:SQL 完成 查詢

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