用于从JavaDB数据库中选择常量字段值的语法是什么?

我正在使用UNION ALL将几个SELECT查询的结果合并到一个ResultSet 。 我使用常量字段值来标识每行产生的语句。 这适用于MySQL,但Java DB抛出SQLSyntaxErrorException ,指向第一个常量字段值后面的逗号。

针对JavaDB数据库的 SELECT 查询中 使用什么语法来选择常量字段值

第一个SELECT有~100列,具有不同的数据类型,并且填充以下SELECT以匹配正确的列数。 我在这里 。 目前的陈述如下:

 select (0, ID, NAME_FIRST, NAME_LAST) from person where ID=500 union all select (1, COMMTYPE_ID, NULL, NULL) from person_commtype where PERSON_ID=500 

这会引发以下exception:

 java.sql.SQLSyntaxErrorException: Syntax error: Encountered "," at line 2, column 7. 

我也试过转换值,并删除括号,如下所示:

 select (cast(0 as integer), ID, NAME_FIRST, NAME_LAST) from person where ID=500 select 0, ID, NAME_FIRST, NAME_LAST from person where ID=500 

SELECT子句中的字段列表中删除括号。

 select 0, ID, NAME_FIRST, NAME_LAST from person where ID=500 union all select 1, COMMTYPE_ID, NULL, NULL from person_commtype where PERSON_ID=500 

问题是Apache Derby不支持

 select null from test 

相反,您必须将null转换为正确的类型:

 select cast(null as varchar(255)) from test 

所以查询看起来像:

 select 0, ID, NAME_FIRST, NAME_LAST from person where ID=500 union all select 1, COMMTYPE_ID, cast(NULL as varchar(255)), cast(NULL as varchar(255)) from person_commtype where PERSON_ID=500 

您还必须删除列列表周围的括号,因为这不是标准的SQL语法。

尝试将您的数字放在单引号中。

 select ('0', ID, NAME_FIRST, NAME_LAST) from person where ID=500 union all select ('1', COMMTYPE_ID, NULL, NULL) from person_commtype where PERSON_ID=500