你好我想做一个带有两个动态prepend =" WHERE"
的复杂动态select语句我在文件xml中写了这个:
<select id="myQuery" parameterClass="myClass" resultClass="myResultClass">
SELECT sum(numRows), Sum(fatturato) FROM
(
SELECT count(*) as numRighe, ISNULL(sum(a.fatture),0) as fatturato
FROM MyTable
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="field">
(code= #field#)
</isNotNull>
</dynamic>
union ALL
SELECT count(*) as numRighe, ISNULL(sum(a.fatture),0) as fatturato
FROM TABLE_2
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="field">
(code= #field#)
</isNotNull>
</dynamic>
) as Query
</select>
如果我在Sql Server上执行查询,则返回成功结果 使用Ibatis,启动方法java,调试结果为0。
是否有可能在IBATIS中使用语句来构建两个子查询的位置?
答案 0 :(得分:0)
我通常会在你的情况下这样做:
WHERE 1=1 AND
<isNotNull prepend="AND" property="field">
(code= #field#)
</isNotNull>
但这不应影响结果。
我怀疑“code”字段的数据类型是Varchar2。如果是,请检查#field#参数是否被修剪。参数中可能还有一些多余的空格。同时检查DB中的“代码”字段是否包含多余空格字符的数据。这可能会让您在尝试检测问题时变得悲惨。