SQL多个条件模糊查询问题。。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL多个条件模糊查询问题。。。相关的知识,希望对你有一定的参考价值。

我用一个textbox 输入信息查询人员信息,textbox内容可以是客户名称,电话,电子邮件,QQ/MSN,客户姓名,客户公司名,地址,备注等内容。可能是文字也可能是数字。
然后我的存储过程是这样的:

@chaxun varchar(30)=‘’
SELECT 。。。

where rymc like '%'+@chaxun +'%'

or [renyuandetail(人员详细)].xm like '%'+@chaxun +'%'

or xb like '%'+@chaxun +'%'

or [renyuandetail(人员详细)].zw like '%'+@chaxun +'%'

or lxdh like '%' +cast(ltrim(rtrim(@chaxun)) as int) +'%' /*lxdh是int型的,这样转换有错吗?*/

or sj like '%'+@chaxun +'%'

or email like '%'+@chaxun +'%'

or QQMSN like '%' +cast(ltrim(rtrim(@chaxun)) as int) +'%'

or gsm like '%'+@chaxun +'%'

or yb like '%' +cast(ltrim(rtrim(@chaxun)) as int) +'%'

or txdz like '%'+@chaxun +'%'

or cz like '%' +cast(ltrim(rtrim(@chaxun)) as int) +'%'

or bz like '%'+@chaxun +'%'

当我输入@chaxun=“1234455”时,显示“在将 varchar 值 '%' 转换成数据类型 int 时失败。”
请问该怎么改正?谢谢!

参考技术A or lxdh like '%' +cast(ltrim(rtrim(@chaxun)) as int) +'%' /*lxdh是int型的,这样转换有错吗?*/
这个地方错了

'%'是 varchar类型,
cast(ltrim(rtrim(@chaxun)) as int) 是int 这两个是不能相加的追问

那请问我应该怎么改呢

追答

lxdh是什么类型?

追问

int

追答

or lxdh = cast(ltrim(rtrim(@chaxun)) as int)
或者
convert(varchar(20),lxdh) like '%'+ ltrim(rtrim(@chaxun)) +'%'

本回答被提问者采纳
参考技术B 问题出在你定义的@chaxun varchar(30)虽然是可变长字符串 若你输入30个1不就产生buge了吗所以varchar()的长度应为10以内只要小于int所表示的最大值或把int改为bigint

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 '%你的条件%'来模糊查询

以上是关于SQL多个条件模糊查询问题。。。的主要内容,如果未能解决你的问题,请参考以下文章

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

多个关联表多字段多条件模糊查询

thinkphp5 怎么将变量作为模糊查询条件

python mongoDB 模糊查询(多条件)

mongodb 怎么对多个字段模糊查询

SQL 模糊查询