【问题标题】:Selecting alias column in Spring Boot Application using MyBatis Sql Query使用 MyBatis Sql Query 在 Spring Boot Application 中选择别名列
【发布时间】:2017-11-13 17:31:08
【问题描述】:

我正在使用 Maven 开发 Spring Boot 应用程序,并且我正在使用 Sybase 数据库和 MyBatis 作为 ORM 框架。

我需要执行如下查询:

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 ''.

【问题讨论】:

    标签: java spring-boot sybase mybatis


    【解决方案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 ...
    

    【讨论】:

    • @SuhasBadhe;伟大的;如果没有其他问题/疑虑,我建议您将问题标记为已回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多