2017-06-12 86 views
0

我正在使用Maven的Spring Boot应用程序,我使用Sybase数据库和MyBatis作为ORM框架。在Spring Boot应用程序中使用MyBatis选择别名列SQL查询

我需要执行的查询,如:

SELECT M.COL_A, M.COL_B, M.COL_C FROM MY_TABLE M 
UNION 
SELECT N.COL_A, N.COL_B, "" AS COL_C FROM MY_TABLE2 N; 

现在MY_TABLE2没有COL_C列,但我需要选择它工会条款的工作。当通过MyBatis的执行

此查询工作正常作为我的数据库,但给了我以下错误:

com.sybase.jdbc3.jdbc.SybSQLException: Invalid column name ''. 

回答

1

您的应用程序连接似乎启用QUOTED_IDENTIFIER运行。

例如,切换出你的表名的一对夫妇系统表:

set quoted_identifier on 
SELECT M.id, M.name, M.crdate FROM sysobjects M 
UNION 
SELECT N.id, N.name, "" AS COL_C FROM syscolumns N 
go 

Msg 207, Level 16, State 4: 
Server 'ASE201', Line 2: 
Invalid column name ''. 

您可以尝试在你的应用程序的连接禁用QUOTED_IDENTIFIER(对不起,不知道如何/在那里你会怎么做,在你的应用程序),或用双引号替换双引号,例如:

set quoted_identifier on 
SELECT M.id, M.name, M.crdate FROM sysobjects M 
UNION 
SELECT N.id, N.name, '' AS COL_C FROM syscolumns N 
go 

id  name   crdate 
------- --------------- ------------------- 
     1 sysobjects  May 31 2016 12:55PM 
     2 sysindexes  May 31 2016 12:55PM 
     3 syscolumns  May 31 2016 12:55PM 
     4 systypes  May 31 2016 12:55PM 
     8 syslogs   May 31 2016 12:55PM 
... snip ... 
+0

感谢大多数markp!它为我工作。 –

+0

@SuhasBadhe;大;如果没有其他问题/疑虑,我建议您将问题标记为已回答 – markp

相关问题