我有一个连接器应用程序,它使用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查询吗?
答案 0 :(得分:4)
我认为没有。您可以在H2中使用case命令来获取if / else效果,并且在您的应用程序中可以考虑进入条件和/或语句的代码,以便您编写它并在您的ms中使用它sql和h2请求。