支持Oracle的模糊查询和精准查询
相信所有的软件开发者都做过页面上的查询功能,而且很多都需要既支持模糊查询的,也需要支持精准查询的,而且不需要增加多余的功能,只需要在文本框中输入包含类似*之类的符号即可。
下面的方法就是通过*来判断到底是模糊查询还是精准查询,方法如下:
/// <summary>
/// 通过输入文本和字段名称来组织返回的查询字符串
/// </summary>
/// <param name="query_name">input string</param>
/// <param name="query_field">query field</param>
/// <returns></returns>
public string QueryString_By_QueryType(string query_name, string query_field)
{
string query_string = string.Empty;
//replace consecutive star siginal to be one star siginal, eg. '***' = '*'
query_name = Regex.Replace(query_name, @"\*{1,}", "*"); //Split the condition to be a Array
string[] conditionList = query_name.Split('*').Where(A=>!string.IsNullOrEmpty(A)).ToArray();
if (conditionList.Length == 1)
{
if (!string.IsNullOrEmpty(query_string))
{
query_string += " AND ";
}
if (!query_name.Contains('*'))
{
query_string += query_field + " = '" + conditionList[0] + "'";
}
else
{
if (query_name.StartsWith("*"))
{
query_string = query_field + " LIKE '" + query_name.Replace('*', '%') + "'";
}
if (!string.IsNullOrEmpty(query_string))
{
query_string += " AND ";
}
if (query_name.EndsWith("*"))
{
query_string += query_field + " LIKE '" + query_name.Replace('*', '%') + "'";
}
}
}
else if (conditionList.Length > 1)
{
foreach (var condition in conditionList)
{
if (!string.IsNullOrEmpty(query_string))
{
query_string += " AND ";
}
query_string += "INSTR(" + query_field + ", '" + condition + "', -1) > 0";
}
for (int i = 1; i < conditionList.Length; i++)
{
if (i < conditionList.Length)
{
if (!string.IsNullOrEmpty(query_string))
{
query_string += " AND ";
}
query_string += "INSTR(" + query_field + ",'" + conditionList[i - 1] + "', -1) < INSTR(" + query_field + ",'" + conditionList[i] + "', -1)";
}
}
} return query_string;
}
调用的时候只需要传入文本和字段名称即可,程序会根据*来判断到底该如何去组织查询语句。
此方法只支持Oracle的查询,如果想要此方法支持SqlServer的查询,只需要把Oracle中的函数稍加修改即可。
支持Oracle的模糊查询和精准查询的更多相关文章
- Asp.net Core C#进行筛选、过滤、使用PredicateBuilder进行动态拼接lamdba表达式树并用作条件精准查询,模糊查询
在asp.net core.asp.net 中做where条件过滤筛选的时候写的长而繁琐不利于维护,用PredicateBuilder进行筛选.过滤.LInq配合Ef.core进行动态拼接lamdba ...
- Oracle总结【SQL细节、多表查询、分组查询、分页】
前言 在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了...印象中就只有基本的SQL语句和相关一些概念....写下本博文的原因就是记载着Or ...
- Oracle的回收站和闪回查询机制(一)
实际工作中,我们经常会遇到一些情况,误删除某些表或某些表的某些记录,这时候就需要我们将这些记录重新插入进去.如何才能解决这个问题呢? Oracle的Flashback query(闪回查询)为我们解决 ...
- Oracle笔记(1) 简单查询、限定查询、数据的排序
Oracle笔记(四) 简单查询.限定查询.数据的排序 一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及 ...
- .Net程序员学用Oracle系列(14):子查询、集合查询
1.子查询 1.1.子查询简介 1.2.WITH 子查询 2.集合查询 2.1.UNION 和 UNION ALL 2.2.MINUS 2.3.INTERSECT 2.4.集合运算与 ORDER BY ...
- oracle使用connect by进行级联查询 树型菜单
Oracle使用connect by进行级联查询 树型菜单(转) connect by可以用于级联查询,常用于对具有树状结构的记录查询某一节点的所有子孙节点或所有祖辈节点. 来看一个示例,现假设我们拥 ...
- Oracle中把一张表查询结果插入到另一张表中
1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: inse ...
- ORACLE 多表连接与子查询
Oracle表连接 SQL/Oracle使用表连接从多个表中查询数据 语法格式: select 字段列表from table1,table2where table1.column1=table2.co ...
- Oracle学习笔记(5)——查询
基本查询语句 SELECT [DISTINCT] column_name1,...|* FROM table_name [WHERE conditions] 在SQL*PLUS中设置格式 更改显示字段 ...
随机推荐
- CSS实现输入框宽度随内容自适应效果
有时候我们会遇到如下需求:输入框的宽度随内容长度自适应,当输入框宽度增大到一定值时,里边的内容自动隐藏. 面对这种需求,我们首先想到的是使用input元素标签,但是发现input标签的宽度默认设定的是 ...
- IDEA去除自动检测bean是否存在
操作步骤如下图所示:
- java笔记 -- java运算
运算符: 算术运算符: 加减乘除求余 + , - , * , / , % 当参与/运算的两个操作数都是整数时, 表示整数除法, 否则表示浮点除法. 例: 15 / 2 = 7; 15 % 2 = 1; ...
- spring 集成 mybatis
在日常的开发中,我们经常需要这样对MyBatis和Spring进行集成,把sqlSessionFactory交给Spring管理,通常情况下,我们这样配置: <bean id="sql ...
- JS打开新窗口防止被浏览器阻止的方法
这篇文章主要介绍了JS打开新窗口防止被浏览器阻止的方法,分析对比了常用方法与改进方法,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了JS打开新窗口防止被浏览器阻止的方法.分享给大家供大家参考. ...
- blob对象的应用
demo:https://pan.baidu.com/s/1hsq2vgK 最近在学习blob,利用blob编写了两个业务场景,详情请下载demo查看 1:大文件分片下载,服务器端使用.net接收客户 ...
- erlang 笔记(06/03/02)
1 .同时打开的端口数量限制(Open ports) erlang:system_info(port_limit)查询 可以通过环境变量ERL_MAX_PORTS修改,或者配置erlang启动参数(标 ...
- 脚本可执行,但无HTML测试报告文件生成,其造成的原因是在PyCharm的执行模式错误
定义测试报告两种写法: 1)测试报告直接在本地绝对路径下生成 # 导入HTMLTestRunner模块 import HTMLTestRunner # 通过open()方法以二进制写模式('wb')打 ...
- selenium java maven自动化测试环境搭建
版本说明: JDK 版本:1.8.0_112: Eclipse IDE: 4.6.1: Maven 版本:apache-maven-3.3.9: Selenium 版本: 3.0.1: Firefox ...
- ThinkPHP5.0源码学习之注册自动加载
ThinkPHP5框架的自动注册加载流程如下: