如何在 oracle mybatis sql 中将一个字符串添加到另一个字符串的末尾?
How can I add a string into the end of the other string in oracle mybatis sql?
我是 mybatis 的新手,我在向 sql 查询提供的参数中添加子字符串时遇到问题。
我目前正在使用 mybatis,我正在尝试向我提供给 sql 查询的参数添加一个子字符串。我正在使用版本为 10.2.0.4.0 的 Oracle ojdbc14。
这是我对试用的预期:
AND EVT_OCCURDT BETWEEN TO_DATE('20171102 000000', 'YYYYMMDD HH24MISS') + 3/24
AND TO_DATE('20171102 235959', 'YYYYMMDD HH24MISS') + 3/24
而我所做的是:
<if test="evt_occurdt != null and !evt_occurdt.equalsIgnoreCase('')">
AND EVT_OCCURDT BETWEEN TO_DATE(#{evt_occurdt} || ' 000000', 'YYYYMMDD HH24MISS') + 3/24
AND TO_DATE(#{evt_occurdt} || ' 235959', 'YYYYMMDD HH24MISS') + 3/24
</if>
我的试用以 java.sql.SQLException 结束:ORA-01843。我猜我的语法有问题,但我找不到包括参数在内的正确语法。
更新
我尝试了一些其他的解决方案:
<if test="evt_occurdt != null and !evt_occurdt.equalsIgnoreCase('')">
AND EVT_OCCURDT BETWEEN TO_DATE(TO_CHAR(#{evt_occurdt}, 'YYYYMMDD') || ' 000000', 'YYYYMMDD HH24MISS') + 3/24
AND TO_DATE(TO_CHAR{#(evt_occurdt}, 'YYYYMMDD') || ' 235959', 'YYYYMMDD HH24MISS') + 3/24
</if>
还是不行,错误代码为ORA-01481
我终于解决了这个问题。这是解决方案:
<if test="evt_occurdt != null and !evt_occurdt.equalsIgnoreCase('')">
AND trunc(EVT_OCCURDT) = TO_DATE(TO_CHAR(#{evt_occurdt}), 'YYYY-MM-DD')
</if>
只需使用 trunc()
到 EVT_OCCURDT 而不是尝试附加一些字符串即可解决问题。
我是 mybatis 的新手,我在向 sql 查询提供的参数中添加子字符串时遇到问题。
我目前正在使用 mybatis,我正在尝试向我提供给 sql 查询的参数添加一个子字符串。我正在使用版本为 10.2.0.4.0 的 Oracle ojdbc14。
这是我对试用的预期:
AND EVT_OCCURDT BETWEEN TO_DATE('20171102 000000', 'YYYYMMDD HH24MISS') + 3/24
AND TO_DATE('20171102 235959', 'YYYYMMDD HH24MISS') + 3/24
而我所做的是:
<if test="evt_occurdt != null and !evt_occurdt.equalsIgnoreCase('')">
AND EVT_OCCURDT BETWEEN TO_DATE(#{evt_occurdt} || ' 000000', 'YYYYMMDD HH24MISS') + 3/24
AND TO_DATE(#{evt_occurdt} || ' 235959', 'YYYYMMDD HH24MISS') + 3/24
</if>
我的试用以 java.sql.SQLException 结束:ORA-01843。我猜我的语法有问题,但我找不到包括参数在内的正确语法。
更新
我尝试了一些其他的解决方案:
<if test="evt_occurdt != null and !evt_occurdt.equalsIgnoreCase('')">
AND EVT_OCCURDT BETWEEN TO_DATE(TO_CHAR(#{evt_occurdt}, 'YYYYMMDD') || ' 000000', 'YYYYMMDD HH24MISS') + 3/24
AND TO_DATE(TO_CHAR{#(evt_occurdt}, 'YYYYMMDD') || ' 235959', 'YYYYMMDD HH24MISS') + 3/24
</if>
还是不行,错误代码为ORA-01481
我终于解决了这个问题。这是解决方案:
<if test="evt_occurdt != null and !evt_occurdt.equalsIgnoreCase('')">
AND trunc(EVT_OCCURDT) = TO_DATE(TO_CHAR(#{evt_occurdt}), 'YYYY-MM-DD')
</if>
只需使用 trunc()
到 EVT_OCCURDT 而不是尝试附加一些字符串即可解决问题。