mysql判断 单字符 不生效 if标签

需求:
<if test="carrier != null and carrier !='' and carrier !='0'">
    AND CARRIER = #{carrier}

</if>

要在carrier字段不为null,'',和"0"的时候增加以上条件,但是以上当carrier等于"0"时,并不生效。

原因:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,'0'会被解析成字符,java是强类型的,char 和 一个string 会导致不等,

所以if标签中的sql不会被解析。

解决办法:

1----换成双引号

<if test='carrier != null and carrier !="" and carrier !="0"'>
    AND CARRIER = #{carrier}

</if>

2----加toSting()

<if test="carrier != null and carrier !='' and carrier !='0'.toString()">
    AND CARRIER = #{carrier}
</if>
总结:单个的字符要写到双引号里面或者使用.toString()才行!
MySQL中,判断字符串是否不包含某个字符可以使用通配符%、字符串函数find_in_set()和字符串函数locate()。使用通配符%可以进行模糊匹配,可以查询某个字符串中是否包含另一个模糊查询的场景。例如,使用LIKE语句可以判断某个字段是否包含某个字符串,如:SELECT * FROM table_name WHERE column_name LIKE '%string%'; \[1\] 另外,MySQL提供了字符串函数find_in_set(),该函数用于返回一个字符串在另一个字符串中的位置索引。如果找到了,则返回大于0的数,否则返回0。该函数的第一个参数是要查找的字符串,第二个参数是要查找的字符串列表,字符串之间用逗号分隔。例如,使用find_in_set()函数可以判断某个字段是否包含某个字符串,如:SELECT * FROM table_name WHERE find_in_set('string', column_name) > 0; \[2\] 此外,MySQL还提供了字符串函数locate(),该函数用于返回一个字符串在另一个字符串中的位置索引。如果找到了,则返回大于0的数,否则返回0。该函数的第一个参数是要查找的字符串,第二个参数是要查找的字符串。例如,使用locate()函数可以判断某个字段是否包含某个字符串,如:SELECT * FROM table_name WHERE locate('string', column_name) > 0; \[2\] 综上所述,可以使用通配符%、字符串函数find_in_set()和字符串函数locate()来判断MySQL中的字符串是否不包含某个字符。 #### 引用[.reference_title] - *1* [MySQL判断某个字符串是否包含某个字符串方法](https://blog.csdn.net/weixin_42537012/article/details/127513229)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [mysql字符串字段判断是否包含某个字符串的3种方法](https://blog.csdn.net/m0_38106299/article/details/81285164)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Mysql字符串字段判断是否包含某个字符串的方法](https://blog.csdn.net/lchq1995/article/details/86615258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值