在 HSQL 左外连接子句中使用 SUBSTR

Posted

技术标签:

【中文标题】在 HSQL 左外连接子句中使用 SUBSTR【英文标题】:Use SUBSTR in HSQL left outer join clause 【发布时间】:2013-02-27 11:12:48 【问题描述】:

我需要使用 HSQL 执行以下查询(使用 ORACLE 可以正常工作):

select t.name as sh_name,
         b.name as sh_bName
from PERSON t 
       left outer join TRANS tr on t.id=tr.tid
       left outer join AGREEM agr on tr.tripNumber=SUBSTR(agr.coll_external,1,4)
       left outer join PERSON b on (b.TYP='BROKER' and agr.broker_id = b.id)

where t.TYP='TRADER'

我收到以下错误:not allowed in OUTER JOIN condition in statement。问题来自SUBSTR 的使用,没有它我不会收到任何错误。在 Oracle 中,上述语句工作得很好。

知道如何在 HSQL 的连接子句中使用 SUBSTR 吗?

【问题讨论】:

【参考方案1】:

这是旧版本 HSQLDB 的限制。

较新的 2.x 版本允许在 OUTER JOIN 条件下使用 SUBSTR 或任何其他函数。

最新版本还支持兼容模式,以改进对 Oracle 数据类型和特性的处理。

【讨论】:

所以更新版本的 hsqldb 将是解决方案...坦克!

以上是关于在 HSQL 左外连接子句中使用 SUBSTR的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 linq lambda 扩展方法执行带有 where 子句的左外连接

具有许多表、左外连接和 where 子句的 LINQ 查询

MySQL左外连接与where子句 - 返回不匹配的行

什么是左外连接 SQLserver

LINQ to Sql 左外连接与 Group By 和 Have 子句

SQL的四种连接-左外连接右外连接内连接全连接