MySQL区间检索
2024-08-25 23:32:26
在没有前端的情况下,自己写一些搜索逻辑,可能不太完善,不过功能完成了
//区间检索的判定
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
最新文章
- 8.仿阿里云虚拟云服务器的FTP(包括FTP文件夹大小限制)
- [zz] 基于国家标准的 EndNote 输出样式模板
- Java笔记--泛型总结与详解
- mysql备份恢复
- HDU 4627 E(Contest #3)
- FDR
- H5 App如此强悍,要降薪的恐怕已不只是iOS程序员
- C#的Socket编程
- 管理维护Replica Sets
- SpringCloud @FeignClient的类注解@ReqestMapping无效报错:No message available";,";path";:";/xxxx
- 排序系列 之 快速排序算法 —— Java实现
- [经验交流] 影响 kubernetes 稳定性的因素
- JS DOM 实现删除和添加的功能
- Windows系统编程之异步I/O和完成端口
- NoHttp封装--03 cookie
- 【Python】unittest-2-断言
- poj 3264 区间最大最小值 RMQ问题之Sparse_Table算法
- LR杂记-nmon+analyser监控linux系统资源
- 13.56Mhz SI522兼容MFRC522的资料以及对比性能
- LeetCode OJ:Implement Stack using Queues(队列实现栈)
热门文章
- python中检测某个变量是否有定义
- CentOS7离线安装Nginx(详细安装过程)
- redis字符串类型的基本命令
- 给初学PHP的学习线路和建议
- (十七)Hibnernate 和 Spring 整合
- WPF 自定义一个控件,当点击按钮是触发到ViewModel(业务逻辑部分)和Xaml路由事件(页面逻辑部分)
- Python练习_购物车_day6
- xposed获取context 的方法
- EBS R12.2系统logo的修改
- SRX550路由器缓存满了无法在web页面操作解决方法