在H2数据库查询中的If-Else条件

时间:2016-03-02 10:20:25

标签: sql-server scala h2

我有一个连接器应用程序,它使用apache camel从第三方数据库读取。我试图使用H2数据库模拟相同的数据库和查询操作,因此测试不需要连接到第三方数据库。 该数据库位于MS SQL Server中。我在H2数据库中使用Mode作为SQLServer。但是,我有一个if-else条件的mssql查询。当我尝试执行它时,我收到以下错误。

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查询吗?

1 个答案:

答案 0 :(得分:4)

我认为没有。您可以在H2中使用case命令来获取if / else效果,并且在您的应用程序中可以考虑进入条件和/或语句的代码,以便您编写它并在您的ms中使用它sql和h2请求。