如何定义隐式列名的 H2 语法问题

Posted

技术标签:

【中文标题】如何定义隐式列名的 H2 语法问题【英文标题】:H2 Syntax Question For How to Define Inplicit Column Name 【发布时间】:2021-08-17 17:58:44 【问题描述】:

我有一个SQL语法问题,在DB2中,我可以写这样的sql:

select * from 
(values(0),(1)) ones(n), 
(values(0),(1)) tens(n)

但在H2中,它会弹出错误:sql语句中的语法错误:

select * from 
(values(0),(1)) ones([*]n), 
(values(0),(1)) tens(n)
[42000-191] 42000/42000

谁能提示如何在 H2 中编写它?我认为这与如何动态定义隐式列有关。

【问题讨论】:

H2 documentation 中有什么不清楚的地方吗?为什么用 [db2] 标记? @mustaccio,我不清楚的是如何在这种情况下给出列名,而在 DB2 中,我可以写为 (values(0),(1)) 个(n),将列名命名为“n”,在 H2 中,这似乎是不允许的,或者我可能还不知道 【参考方案1】:

您使用的是过时版本的 H2 数据库。此语法仅从 H2 1.4.197 开始支持,您需要使用它或更新的版本。

【讨论】:

谢谢,你是对的,在我升级到 H2 1.4.200 之后,它现在可以识别这个语法了。

以上是关于如何定义隐式列名的 H2 语法问题的主要内容,如果未能解决你的问题,请参考以下文章

04.DML语言

04.DML语言

如何从 SQLAlchemy 结果中获取列名(声明性语法)

H2 列名选择返回不正确的列名; “未找到列“OUT_ID”;SQL 语句:”

H2:使用嵌套查询的计数查询中的列名重复

sql-maven-plugin 为 H2 存储过程定义抛出 SQL 语法错误