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

If-Else condition in H2 database query

我有一个连接器应用程序,它使用 apache camel 从第三方数据库读取数据。我正在尝试使用 H2 数据库模拟相同的数据库和查询操作,以便测试不需要连接到第三方数据库。 数据库在 MS SQL 服务器中。我在我的 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 查询?

我认为没有。您可以在 H2 中使用 case 命令来实现 if/else 效果,并且在您的应用程序中可以将进入条件 and/or 语句的代码分解为要执行的代码,以便您编写并使用它在您的 ms sql 和 h2 请求中。