oracle无效列类型1111以及文字与格式字符串不匹配问题

1、无效列类型1111其中问题之一
就是说在oracle中参数可能传空
这里就需要在参数后面加上jdbcType=xxx,
下面举个例子 字符串与jdbcType就是这样

   #{item,jdbcType=VARCHAR}

2.日期类转换与格式字符串不匹配问题
这里我主要的问题是日期类格式不对 想要去掉时分秒在和参数中的作比较
具体代码转换如下
需要注意的知识点
to_date是将字符串转成日期型
to_char是将日期型转成字符串

  to_date(to_char(e.create_time, 'yyyy-mm-dd'),'yyyy-mm-dd') = to_date(#{createTime},'yyyy-mm-dd')

下面是一段具体业务代码

    <select id="getFacultyHeanlth" parameterType="java.lang.String" resultType="Map">
        SELECT
        count(e.id) AS reported,
        sum( CASE WHEN unusual_symptom = 1 THEN 1 ELSE 0 END ) AS fever,
        sum( CASE WHEN unusual_symptom = 2 THEN 1 ELSE 0 END ) AS cough,
        sum( CASE WHEN unusual_symptom = 3 THEN 1 ELSE 0 END ) AS angina,
        sum( CASE WHEN unusual_symptom = 4 THEN 1 ELSE 0 END ) AS other,
        sum( CASE WHEN body_temperature > 372 THEN 1 ELSE 0 END ) AS bodyTemperature,
        sum( CASE WHEN is_touch_ill = 1 THEN 1 ELSE 0 END ) AS abnormal
        FROM
        epidemic_report_info e
        WHERE
--         先将其转换成字符串想要的格式 在将其转换成data类型比较
        to_date(to_char(e.create_time, 'yyyy-mm-dd'),'yyyy-mm-dd') = to_date(#{createTime},'yyyy-mm-dd')
                AND
        e.dept_id IN
        <foreach item="item" collection="deptIds" index="index" open="(" separator="," close=")">
            #{item,jdbcType=VARCHAR}
        </foreach>
        <if test="type != null">
            AND e.user_type = #{type,jdbcType=VARCHAR}
        </if>

    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值