MySQL区间检索

在没有前端的情况下,自己写一些搜索逻辑,可能不太完善,不过功能完成了

//区间检索的判定
    private String columnTextTranslateRegion(String columnText) {
        if (columnText != null && columnText != "") {
            System.out.println("columnText>>>   " + columnText);
            String[] columnTextArr = columnText.split(":");
            System.out.println(columnTextArr.length);
            //数组[0]是比较符号,[1]是第一个参数,[2]是第二个比较符号,[3]是第二个参数
            if ("[null]".equals(columnTextArr[1]) && "[null]".equals(columnTextArr[3])) {
                System.err.println("没有填入任何值");
                return null;
            } else if (!"[null]".equals(columnTextArr[0]) && "[null]".equals(columnTextArr[2])) {
                //只查询一个input (左侧) 情况1
                String mathSymbolLeft = getMathSymbol(columnTextArr[0].toString());
                String valueLeft = columnTextArr[1].toString();
                //如果情况1 value无值,则该字段也设定为null
                if ("[null]".equals(valueLeft)) {
                    return null;
                } else {
                    System.out.println(mathSymbolLeft + ":" + valueLeft);
                    columnText = mathSymbolLeft + " " + valueLeft;
                    return columnText;
                }
            } else if ("[null]".equals(columnTextArr[0]) && !"[null]".equals(columnTextArr[2])) {
                //只查询一个input (右侧,一般不会发生,因为左侧默认不会选null)
                String mathSymbolRight = getMathSymbol(columnTextArr[2].toString());
            } else if (!"[null]".equals(columnTextArr[0]) && !"[null]".equals(columnTextArr[2])) {
                //两个都不为null,即设定了两个查询参数  情况2
                String mathSymbolLeft = getMathSymbol(columnTextArr[0].toString());
                String mathSymbolRight = getMathSymbol(columnTextArr[2].toString());
                String valueLeft = columnTextArr[1].toString();
                String valueRight = columnTextArr[3].toString();
                //如果valueL valueR 其中一个为null,则设定对应符号也为null
                if ("[null]".equals(valueLeft) && !"[null]".equals(valueRight)) {
                    columnText = "SUBSTRING_INDEX(" + columnTextArr[4].replace("s_", "") + ",'-',-1)" + mathSymbolRight + " " + valueRight;
                    return columnText;
                } else if (!"[null]".equals(valueLeft) && "[null]".equals(valueRight)) {
                    columnText = "SUBSTRING_INDEX(" + columnTextArr[4].replace("s_", "") + ",'-',1)" + mathSymbolLeft + " " + valueLeft;
                    return columnText;
                } else {
                    columnText = mathSymbolLeft + " " + valueLeft + " and SUBSTRING_INDEX(" + columnTextArr[4].replace("s_", "") + ",'-',-1) " + mathSymbolRight + " " + valueRight;
                    return columnText;
                }
            }
        }
        return columnText;
    }

新的一个方法,不同于只是返回> 5, < 4的操作,而是判定的是数据库字段为VARCHAR类型的 1-2, 或 3-4 等

左边的input判定的是数据库1-2中1的值,而右侧input判定的是1-2中2的值.

在SQL中:

<if test="s_granularity != null and s_granularity != '' ">
        and  ${s_granularity}
</if>

直接判定搜索字段s_granularity不为空,那么直接拼接该字符串.

示例SQL:

SELECT count(0) FROM calcined_coke_tbl WHERE SUBSTRING_INDEX(granularity, '-', 1) = 11
SELECT count(0) FROM calcined_coke_tbl WHERE SUBSTRING_INDEX(granularity, '-', -1) = 33 
SELECT count(0) FROM calcined_coke_tbl WHERE SUBSTRING_INDEX(granularity, '-', 1) < 22 AND SUBSTRING_INDEX(granularity, '-', -1) > 3 

 

 

转载于:https://www.cnblogs.com/ukzq/p/10460628.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值