1

在 Sybase ASE 15 上,我有一组看起来像这样的数据库模式:

模式 S1:

CREATE TABLE T1 (T1KEY INT)

模式 S2:

CREATE TABLE T2 (T2KEY INT, T1FK INT)

T2 的 T1FK 基本上是 T1 的 T1KEY 列的 FK(不是由实际的数据库业务规则强制执行,但值匹配)。

在 Sybase 中,跨这些模式执行连接是合法的,如下所示:

SELECT a.T1KEY, b.T2KEY
  FROM S1..T1 a
  LEFT OUTER JOIN S2..T2 AS b ON (a.T1KEY = b.T1FK)

我还没有找到任何支持这种语法的嵌入式数据库。Derby 和 HSQLDB 似乎都对双点语法犹豫不决,即使该语法被替换为,例如S1.dbo.T1,也不是 DB。我正在使用 MyBatis 3.1.1 运行查询,这些查询在针对 ASE 服务器的实际部署中运行良好。

我希望能够在单元测试时站起来支持这样的查询,但我知道 Sybase 语法往往得不到很好的支持。我知道对于 Oracle,HSQLDB 支持一个标志来实现与 ORA 特定语法的兼容性。是否有一些我缺少的语法标志可以使这些数据库中的任何一个能够像上面那样处理 Sybase 查询语法?是否有任何替代产品支持此用例?

非常感谢!

4

1 回答 1

0

HSQLDB 支持的语法是标准 SQL,它使用一个点。

SELECT a.T1KEY, b.T2KEY
  FROM S1.T1 a
  LEFT OUTER JOIN S2.T2 AS b ON (a.T1KEY = b.T1FK)

由于标准 SQL 语法中从不出现双点,因此当您对 HSQLDB 运行查询时,您可以安全地将所有出现的双点替换为单点。

于 2013-03-06T12:48:25.763 回答