H2 DB 查询和 Sql Server 之间的兼容性问题

Posted

技术标签:

【中文标题】H2 DB 查询和 Sql Server 之间的兼容性问题【英文标题】:Compatibility issue between H2 DB queries and Sql Server 【发布时间】:2016-07-06 10:05:11 【问题描述】:

我正在开发一个使用 H2 DB 的应用程序。但是 Sql server 不支持 H2 支持的语法中的查询,反之亦然。有什么方法可以使应用程序使用同时支持 H2 和 Sql Server 的通用查询结构工作? 这是我的疑问.. 第一次查询

SQL Server 语法 -

SELECT columns INTO  table_1 FROM table_2  WHERE conditions

H2 DB 等效

CREATE TABLE table_1 AS  SELECT columns FROM table_2 WHERE conditions

*SQL Server 不支持上述 H2 查询

第二次查询

SQL 服务器语法

UPDATE a SET columns FROM table_1 a JOIN table_2 b on keys WHERE conditions  INSERT INTO table_1(columns) SELECT columns FROM  table_2 WHERE conditions

H2 DB 等效

第一部分

 UPDATE table_1 a  SET column=(SELECT column FROM table_2 b WHERE conditions) 

第二部分

 INSERT INTO table_1(columns) SELECT columns FROM  table_2 WHERE conditions

【问题讨论】:

【参考方案1】:

是的,重写查询。

这样做的正确方法是创建目标表,然后说:

插入到 table2 SELECT ... FROM table1

【讨论】:

以上是关于H2 DB 查询和 Sql Server 之间的兼容性问题的主要内容,如果未能解决你的问题,请参考以下文章

未在 H2 数据库上执行的 Sql 查询

在 2008 SQL Server DB 和 Android App 之间进行通信

HSQLDB Junit 测试对 DB2 和 SQL Server NOLOCK 查询失败

在 SQL Server DB 之间自动/以编程方式复制表(结构和数据)

数据库语言之间的区别 SQL server , Oracle , mysql , db2``

sql server 查询db中都有哪些地方调用了某个sp