用JS脚本如何实现多关键+多条件的查询(SQL语句)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用JS脚本如何实现多关键+多条件的查询(SQL语句)?相关的知识,希望对你有一定的参考价值。

像百度一样,在多个关键词之间加空格,就可以进行多关键词的模糊查询加%我知道,主要是加空格那部份.

有数据表:shujubiao
var xhao=Request("xuhao_flash");
var xming=Request("xingming_flash");
var ywen=Request("yuwen_flash");
var sxue=Request("shuxue_flash");

实现加空格就可以实现如标题所讲的:像百度一样,在多个关键词之间加空格,就可以进行多关键词的模糊查询

应该怎么样写?

帮我写出来好吗?

参考技术A 朋友,脚本语言是一种简单的语言,是没有办法实现这样的功能的,不管是JS or VBS。只有asp、php、jsp程序语言可以。 参考技术B ```
Array.prototype._killSpaceFun = function(res)return res.replace(/\s/g,"");

Array.prototype._whereFun = function(row,conditions)
var fs = [];
conditions.forEach(function(item,index)
var key = item.key;
var val = item.value;
var type = item.type;
var flg = false;
var v = row[key];

if(typeof v != "undefined")
switch(type)
case "==":
flg = (v == val);
break;
case "!=":
flg = (v != val);
break;
case "%%":
flg = (String(v).toLowerCase().indexOf(String(val)) >= 0);
break;
case "!%":
flg = (String(v).toLowerCase().indexOf(String(val)) < 0);
break;
case "#%":
flg = (String(v).substr(0,String(val).length) == String(val));
break;
case "%#":
flg = (String(v).substr(String(val).length,String(v).length) == String(val));
break;
case ">":
flg = (Number(v) > Number(val));
break;
case ">=":
flg = (Number(v) >= Number(val));
break;
case "<":
flg = (Number(v) < Number(val));
break;
case "<=":
flg = (Number(v) <= Number(val));
break;
default:
flg=false;
break;

fs.push(flg);


);
return !fs.includes(false);


Array.prototype._formatFun = function(cond)
var cc = ["%%","#%","%#","!%","==","!=",">=","<=",">","<"];
var cl = [];
var ret = null;
cc.forEach(function(item,index)
if(ret == null)
if(cond.indexOf(item)>=0)
var sm = cond.split(item);
ret = "key":sm[0];
ret.type = item;
ret.value = sm.length >= 1 ? sm[1] : null;
if(ret.value == null)ret=null;


)
return ret;
;

Array.prototype.itemSelect = function(fields,where,igCase)
igCase = typeof igCase == "undefined" ? true : Boolean(igCase);
where = typeof where == "undefined" ? "" : String(where);
where = igCase == true ? where.toLowerCase() : where;

fields = this._killSpaceFun(fields);
var flds = igCase == true ? this._killSpaceFun(fields).toLowerCase().split(",") : this._killSpaceFun(fields).split(",");

var src_conds = this._killSpaceFun(where).split("&&");
var obj_conds = [];
src_conds.forEach(function(item,index)
var cond = obj_conds._formatFun(item);
if(cond!=null)
obj_conds.push(cond);

);

var _ls = [];
this.forEach(function(item,index)
if(obj_conds._whereFun(item,obj_conds))
if(fields == "*" || fields == "")
_ls.push(item);
else
var _row = ;
flds.forEach(function(key,idx)
_row[key] = typeof item[key] == "undefined" ? null : item[key];

);
_ls.push(_row);


);
return _ls;


```

试下这个,无聊的时候测试的产物。
使用如下
```
var list = [id:1,"name":"a",id:2,"name":"aa",id:3,"name":"bbb"];
//查询基本语法,array.itemSelect("字段列表","条件")
//==:等于
//>=:大于等于
//<=:小于等于
//%%:%A%
//#%:A%
//%#:%A
//!=:不等于
//>:大于
//<:小于

list.itemSelect("id,name","id > 1");

```

jsp如何按指定条件进行模糊查询

比如我在一个页面上通过下拉列表选择了查询条件。。如何利用MVC模式进行对应的模糊查询

其实你只要在JSP页面选择了查询条件,将查询条件这些传入Servlet中进行处理,在Servlet中调用相应的数据库处理dao。模糊查询就是在这个dao的sql中进行定义的,需要你根据需要写出相应的sql。比如查询姓张的学生:
sql = "select * from student_inf where stu_name like '张%'"
这仅是个举例,具体你看情况而定。
模糊查询就是在查询数据库的时候在sql上做文章,至于mvc模式,最简单的实现就是jsp+servlet+javaBean。如果楼主不清楚,查阅点资料。
希望我的回答对你有所帮助。
参考技术A 这个不是三言两语能解决的~
方法不止一个~
首先弄懂MVC
或用AJAX
参考技术B 模糊查询一般是数据库的查询语句,将你从页面上选择的查询条件传到数据访问层,然后查询语句里用like '%你的条件%'来模糊查询

以上是关于用JS脚本如何实现多关键+多条件的查询(SQL语句)?的主要内容,如果未能解决你的问题,请参考以下文章

多选择筛选查询SQL语句怎么写

关于SQL多条件查询问题: 若其中一条件为空值如何设置忽略该条件而用其它条件组合查询??

SQL多个条件查询语句

SQL语句where多条件查询怎么写

c# linq 动态多条件查询语句的写法

多条件查询