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

时间:2012-05-04 18:42:09

标签: java mysql sql derby

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

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

第一个SELECT有大约100列具有不同数据类型的列,并且填充以下SELECT以匹配正确的列数。我做到了here。目前的陈述如下:

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

引发以下异常:

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

问题是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语法。

答案 2 :(得分:-1)

尝试将您的数字用单引号括起来。

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