2016-03-02 69 views
7

我有一個連接器應用程序,它使用apache駱駝從第三方數據庫讀取。我試圖用H2數據庫來模擬相同的數據庫和查詢操作,以便測試時不需要連接到第三方數據庫。 該數據庫位於MS SQL Server中。我在我的H2數據庫中使用模式作爲SQLServer。但是,我有一個與if-else條件的mssql查詢。當我嘗試執行它時,出現以下錯誤。如果 - 否則在H2數據庫查詢條件

MSSQL查詢

if((SELECT count(*) from Employee where DateCreated < '2016-02-02 00:05:00')>1) 
    SELECT TOP 10 * from Employee where DateCreated < '2016-02-02 00:05:00' 
    else 
    SELECT TOP 1 * from Employee where DateCreated < '2016-02-02 00:05:00' 

錯誤消息:

Exception in thread "main" org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement " IF[*]((SELECT COUNT(*) FROM EMPLOYEE)>1) 
    SELECT TOP 10 * FROM EMPLOYEE 
    ELSE 
    SELECT TOP 1 * FROM EMPLOYEE "; expected "INSERT, {"; SQL statement: 
    if((SELECT count(*) from Employee)>1) 
    SELECT TOP 10 * from Employee 
    else 
    SELECT TOP 1 * from Employee [42001-185] 

我假設的條件查詢沒有在H2數據庫支持。無論如何,我可以在H2中執行相同的查詢嗎? 最糟糕的情況,有沒有其他的方法,我可以在其中改變與H2兼容的mssql查詢?

+0

實際查詢太大,所以我不想在這裏粘貼。如果條件匹配,我們需要執行另外一個查詢。爲了測試這個場景,我簡單地創建了一個簡單的查詢。 –

回答

3

我不這麼認爲。您可以在H2中使用case命令來獲得if/else效果,並且在您的應用程序中可以考慮進入要執行的條件和/或語句的代碼,以便您編寫它並在ms sql和h2請求中使用它。