【发布时间】:2016-06-15 03:16:12
【问题描述】:
我有一个连接器应用程序,它使用 apache camel 从第三方数据库中读取数据。我正在尝试使用 H2 数据库模拟相同的数据库和查询操作,因此测试不需要连接到第三方数据库。 该数据库位于 MS SQL Server 中。我在我的 H2 数据库中使用模式作为 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 查询?
【问题讨论】:
-
实际查询过大,这里就不贴了。如果条件匹配,我们需要执行一个查询,否则执行一个不同的查询。为了测试这个场景,我简单地创建了一个简单的查询。
标签: sql-server scala h2