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
本文来自博客园,作者:ukyo--君君小时候,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/10460628.html