在mybatis开发过程中有需要在sql中判断查询哪张表,如下sql:

SELECT
a.tag_name,
a.tag_id,
count( 0 ) AS base_total
FROM
mm_dd_body a
<if test="tagType!=null and tagType == '0'">
LEFT JOIN ccc AS b ON b.tag_body_id = a.id
</if>
<if test="tagType!=null and tagType == '1'">
<![CDATA[
left join `vvvv` `b` on CONVERT ( concat( '-', `b`.`mark_rule_key` ) USING utf8mb4 ) REGEXP concat( '(\\(|[[:blank:]]+|-){1,}', `a`.`column_name`, '(>|<|>=|<=|=|[[:blank:]])+' )
AND b.tag_id IN ( SELECT tag_id FROM gggg WHERE product = a.product )
]]>
</if>
WHERE
a.tag_base_cat = #{tagType}
AND a.del = 0

在运行时发现不管tagType传什么值都不会进入两个if中,
经过分析,'1'是会被转成数字,所以这里有两种方案:
方案1:将参数转为int类型,再进行比较

 <if test="tagType!=null and tagType == 0 ">
LEFT JOIN ccc AS b ON b.tag_body_id = a.id
</if>

方案二:将数字转成字符串,加上.toString(),如下:

    <if test="tagType!=null and tagType == '0'.toString()">
LEFT JOIN ccc AS b ON b.tag_body_id = a.id
</if>

当然上面的设计本就不是一个好的设计,违背了单一职责原则,可以将if判断剥离成两个单独select,然后在业务层去判断是使用哪个,这也是一种好的方案,可以规避不少坑

mybatis坑之数字字符串比对的更多相关文章

  1. JAVA将数字字符串强制转换成整型变量----求参数之和实验代码(附流程图)

    一.设计思想 先将参数个数输出,并利用循环结果将参数逐个输出,再将字符串强制转化成整型,利用循环结构相加求和 二.程序流程图 三.源程序代码 package demo; public class Co ...

  2. js如何将纯数字字符串转换为long型

    1.js如何将纯数字字符串转换为long型? js 中 int的存储位数?最大十进制数表示是多少? 精度http://www.jb51.net/article/59808.htm 整数(不使用小数点或 ...

  3. double类型字符串转换成一个纯数字字符串和一个小数点位数的c++代码

    今天工作中遇到一个要不一个double型的字符串转换成一个纯字数字符串和一个标志这个数字字符串的小数点有几位的int类型 例如:“23.123”--->“23123” + 3   比较简单.就是 ...

  4. 基于visual Studio2013解决面试题之0503取最大数字字符串

     题目

  5. 在js中做数字字符串加0补位,效率分析

    分类: Jquery/YUI/ExtJs 2010-08-30 11:27 2700人阅读 评论(0) 收藏 举报 functiondate算法语言c 通常遇到的一个问题是日期的“1976-02-03 ...

  6. java数字字符串累加1的解决方案

    近期操作项目遇到这样的问题,研究了下搞出了一个解决方案. //num也可以是在数字字符串里面截取的,比如我有14位的数字字符串前六位是市级,7,8位代表县区,后两位代表乡镇,最后四位是累计+1的,这个 ...

  7. C# 设置Excel中的数字字符串格式

    在Excel中,数字字符串用不同格式表示,可代表不同数据意义.例如在财务报表里需要用特定的数字字符串格式来反映金额信息.货币币种.数据精确程度.增减趋势等等.下面分享如何通过C#编程来设置Excel表 ...

  8. is_numeric — 检测变量是否为数字或数字字符串

    is_numeric — 检测变量是否为数字或数字字符串 bool is_numeric ( mixed $var ) 如果 var 是数字和数字字符串则返回 TRUE ,否则返回 FALSE . 参 ...

  9. C#学习-图解教程(1):格式化数字字符串

    学习内容:C#:学习书籍:图解教程(中文第四版). 目录:第二章 C#编程概述 -----> 2.7 从程序中输出文本 -----> 2.7.5格式化数字字符串 using System; ...

  10. PHP is_numeric 检测变量是否为数字或数字字符串

    bool is_numeric ( mixed $var ) 如果 var 是数字和数字字符串则返回 TRUE,否则返回 FALSE. For example 1: <?php $v = is_ ...

随机推荐

  1. vue3实现模拟地图上,站点名称按需显示的功能

    很久很久没有更新博客了,因为实在是太忙了,每天都有公司的事情忙不完....... 最近在做车辆模拟地图,在实现控制站点名称按需显示时,折腾了好一段时间,特此记录一下.最终界面如下图所示: 站点显示需求 ...

  2. ARC 170_A 题解

    AT_arc170_a [ARC170A] Yet Another AB Problem 题解 这道题做了我七天 (同时也是我第一到通过的 ARC 题) 太酷了 其实还是比较好理解的 原题题干 原题题 ...

  3. Python图像暗水印添加

    推荐使用库:   blind-watermark pip install blind-watermark https://github.com/guofei9987/blind_watermark

  4. 使用Spleete进行人声与背景声分离

    安装:https://pypi.org/project/spleeter/ 下载权重: 2sterms.tar.gz https://github.com/deezer/spleeter/releas ...

  5. KES数据库实践指南:探索KES数据库的事务隔离级别

    引言 前两篇文章我们详细讲解了如何安装KES金仓数据库,并提供了快速查询和搭建基于coze平台的智能体的解决方案.今天,我们的焦点将放在并发控制机制和事务隔离级别上. 本文将通过一系列实验操作,深入探 ...

  6. 国产化率100%!全志科技A40i工业核心板规格书资料分享

    1.核心板简介 创龙科技SOM-TLA40i是一款基于全志科技A40i处理器设计的4核ARM Cortex-A7国产工业核心板,每核主频高达1.2GHz. 核心板通过邮票孔连接方式引出CSI.TVIN ...

  7. SpringBoot 整合EasyExcel 获取动态Excel列名

    导读 最近负责消息网关,里面有个短信模板导入功能,因为不同模板编号对应不同参数,导入后的数据定时发送,涉及到Excel中列名不固定问题,于是想根据列名+值,组合成一个大JSON,具体代码如下. 引入依 ...

  8. P3938

    斐波那契 题意描述 输入 5 1 1 2 3 5 7 7 13 4 12 输出 1 1 2 2 4 点拨 根据题目去找规律,每一个儿子与父亲结点具有斐波那契数的规律,我们只需要每次找到该数在斐波那契数 ...

  9. Solo 开发者周刊 (第9期):Dawwin首位人工智能编程师或将改变未来?

    这里会整合 Solo 社区每周推广内容.产品模块或活动投稿,每周五发布.在这期周刊中,我们将深入探讨开源软件产品的开发旅程,分享来自一线独立开发者的经验和见解.本杂志开源,欢迎投稿. 好文推荐 Daw ...

  10. Nuxt.js 错误侦探:useError 组合函数

    title: Nuxt.js 错误侦探:useError 组合函数 date: 2024/7/14 updated: 2024/7/14 author: cmdragon excerpt: 摘要:文章 ...