用于从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