首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理SQL Select语句(IBatis 2)中的空IN子句?

如何处理SQL Select语句(IBatis 2)中的空IN子句?
EN

Stack Overflow用户
提问于 2015-02-06 14:30:09
回答 1查看 1.1K关注 0票数 0

我在IBatis版本2中编写了以下SQL语句:

代码语言:javascript
复制
<select id="mySelect" resultClass="long" >
    SELECT  COUNT(*)        
    FROM    myTable 
    WHERE   myTable.columnA IN
        <iterate property="myInClauseValues" open="(" close=")" conjunction=",">                    
                #myInClauseValues[]#                    
        </iterate>          
</select>

如果myInClauseValues (这是一个带有Long的ArrayList )至少包含一个值,则该语句可以很好地工作。但如果myInClauseValues为空,我会收到如下错误消息(我正在使用oracle数据库):

代码语言:javascript
复制
 Check the statement (query failed). 
 Cause: java.sql.SQLException: ORA-00936: Expression is missing 
EN

回答 1

Stack Overflow用户

发布于 2015-02-06 14:47:45

使用Ibatis动态查询是正确的方式吗??

例如:

代码语言:javascript
复制
<select id="mySelect" resultClass="long" >
    SELECT  COUNT(*)        
    FROM    myTable 
   <where>
    <isNotEmpty prepend="AND" property="myInClauseValues" >
       myTable.columnA IN
       <iterate property="myInClauseValues" open="(" close=")" conjunction=",">                    
                    #myInClauseValues[]#                    
       </iterate>       
    </isNotEmpty>   
   </where>      
</select>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28359831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档