EBOARD_DATETIME 为DATE类型,startTime与endTime为String类型
方法一:
<where>
<trim>
<if test="productCode!= null and productCode!= ''">
and regexp_like(EBOARD_PRODUCTCODE ,#{productCode},'i')
</if>
<if test="productName!= null and productName!= ''">
and regexp_like(EBOARD_PRODUCTNAME ,#{productName},'i')
</if>
<if test="startTime!= null and startTime!= ''">
<if test="endTime!= null and endTime!= ''">
and EBOARD_DATETIME
BETWEEN
to_date(#{startTime},'yyyy-MM-DD hh24:mi:ss')
AND to_date(#{endTime},'yyyy-MM-DD hh24:mi:ss')
</if>
</if>
</trim>
</where>
方法二:
<where>
<trim>
<if test="productCode!= null and productCode!= ''">
and regexp_like(EBOARD_PRODUCTCODE ,#{productCode},'i')
</if>
<if test="productName!= null and productName!= ''">
and regexp_like(EBOARD_PRODUCTNAME ,#{productName},'i')
</if>
<if test="startTime!= null and startTime!= ''">
<![CDATA[ and EBOARD_DATETIME >= to_date(#{startTime},'yyyy-MM-dd HH24:MI:SS') ]]>
</if>
<if test="endTime!= null and endTime!= ''">
<![CDATA[ and EBOARD_DATETIME < to_date(#{endTime},'yyyy-MM-dd HH24:MI:SS')+1 ]]>
</if>
</trim>
</where>
<![CDATA[ ]]> 的作用是将【】内内容表示为纯文本
<![CDATA[ ]]>作用与转义字符相同
<![CDATA[ ]]> 表示xml解析器忽略解析,所以更快
本文探讨了两种不同的SQL查询方法,用于在EBOARD_DATETIME为DATE类型,startTime和endTime为String类型的数据中进行产品代码、产品名称的正则匹配以及日期范围过滤。方法一使用BETWEEN操作符,而方法二则分别用大于等于和小于操作符来实现时间范围的查询。这两种方法在处理日期和字符串条件时提供了不同策略。
3208

被折叠的 条评论
为什么被折叠?



