带有输入参数的动态sql模糊查询????

如题:
我写了一个带有参数的动态sql,如下:
DECLARE @SQL NVARCHAR(1000)
DECLARE @PARMDEFINITION NVARCHAR(50)
DECLARE @VARVARIABLE VARCHAR(20)

SET @SQL= 'SELECT * FROM STUDENT WHERE NAME=@PERSONNAME'
SET @PARMDEFINITION='@PERSONNAME VARCHAR(50)'
SET @VARVARIABLE='李明'

EXEC SP_EXECUTESQL @SQL,@PARMDEFINITION,@PERSONNAME=@VARVARIABLE
但是这段sql语句不能进行模糊查询,现在我想查出NAME字段中所有姓李的学生的记录,该怎么写,高手指教。多谢了。新年快乐!!!!

把SET @SQL= 'SELECT * FROM STUDENT WHERE NAME=@PERSONNAME'
改成SET @SQL= 'SELECT * FROM STUDENT WHERE NAME like @PERSONNAME'

SET @VARVARIABLE='李明' 就是精确查
SET @VARVARIABLE='李%' 就是模糊查
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-02-09
楼上正解

把 SET @VARVARIABLE='李明' 换成..... SET @VARVARIABLE='李%'
第2个回答  2010-02-09
DECLARE @SQL NVARCHAR(1000)
DECLARE @PARMDEFINITION NVARCHAR(50)
DECLARE @VARVARIABLE VARCHAR(20)

SET @SQL= 'SELECT * FROM STUDENT WHERE NAME like ''%@PERSONNAME%'''
SET @PARMDEFINITION='@PERSONNAME VARCHAR(50)'
SET @VARVARIABLE='李明'

EXEC SP_EXECUTESQL @SQL,@PARMDEFINITION,@PERSONNAME=@VARVARIABLE
第3个回答  2010-02-09
没有细看,随便说下:SET @VARVARIABLE='李明'-》SET @VARVARIABLE='李%'

JSP页面中在文本框中输入内容,动态从数据库模糊查询显示到下拉框中...
action中就是个一般的模糊查询方法,返回的是你要查询的list,当然,你也可以使用MAP或者别的,等ajax回调后,填充到下拉列表中 大致思路是这样,另外你可以在百度上搜个例子,

PreparedStatement进行模糊查询时的问题
代码中使用PreparedStatement进行模糊查询,通过设置SQL语句中的`?`占位符,动态传入查询条件。首先,导入所需的Java SQL包,并定义连接数据库的参数,如驱动名、数据库连接URL、用户名和密码。尝试性地初始化数据库连接,调用`getConnection`方法并传入URL、用户名和密码。定义SQL语句,其内容为从`authors`表...

PB数据窗口中SQL语句动态LIKE后边加参数如何加?
SELECT pos_checkin.checkindate,pos_checkin.memno,pos_checkin.name,mem_member.memberkind,pos_sales.itemcode,pos_sales.itemname1,pos_sales.saleprice,pos_sales.quantity,pos_sales.totalpayable,pos_sales.sale_kinds,pos_sales.parent_kinds,pos_bills.serverno FROM pos_sales,pos_checkin,...

MyBatis 动态SQL where\/if\/choose\/bind介绍
而在处理多个参数时,choose标签会执行第一个满足条件的部分,后续条件将被忽略,这与Java的短路逻辑类似。最后,where+bind标签则是绑定OGNL表达式的值到变量,特别适合在模糊查询中,提供方便的变量引用,简化了查询语句的编写。总结起来,MyBatis的动态SQL提供了强大的条件控制和变量绑定功能,使得复杂的SQL...

MyBatis中like的几种使用方式
接着,我们看看“#{参数名}”的运用。与“${参数名}”相比,“#{参数名}”使用了占位符的方式,将参数进行预编译处理,确保了参数的安全性,避免了 SQL 注入风险,同时提高了查询效率。最后,CONCAT() 函数结合参数进行连接的用法在某些特定场景下显得尤为实用。这种方式适用于构建动态 SQL 语句时,...

sql如何实现单表多关键字模糊查询,在线等
string sql='select * from tb where 'for(数组循环取值){ sql=sql+"title like '%"+数组值+"%' or";} 然后处理掉sql最后的or,用;替代即可 为确保sql语句正确,加一句system.out.println(sql);输出到控制台看看sql语句是否正确 记得如果你是说满足数据中任意一个元素即可那就不能用and,...

【2023最新Java大厂面试题】——MyBatis面试题,看完拿捏面试官_百度知 ...
模糊查询使用like时,需注意防止SQL注入。Mapper接口与XML映射文件的对应关系,以及如何进行分页和对象映射也是常见问题。MyBatis通过RowBounds实现内存分页,支持自定义分页插件。对象属性与数据库列的映射方式、批量插入、主键获取、多参数传递和动态SQL的使用,都是面试时可能涉及的关键知识点。

带参数的sql语句的like匹配的问题
可以用where left(TypeName,len(@TypeName))=@TypeName 也可以动态SQL declare @sql varchar(max)set @sql='SELECT [ID], [TypeName] FROM [CompanyType] WHERE ([TypeName] like ''%'+@TypeName+'%'')'exec @sql

SpringBoot整合MybatisPlus实战动态SQL
其中,bind标签用于将变量绑定到SQL语句中,如在模糊搜索场景下,使用`like #{nameLike}`即可实现对`username`的模糊查询。set标签常用于修改语句,灵活处理数据库中的数据更新需求。动态SQL的另一个关键组件是trim标签,它提供了一系列参数以精确控制SQL语句的构建过程,确保生成的SQL语句符合预期。然而,...

#{}如何防止SQL注入的?它的底层原理是什么?
应用场景:在实际应用中,${}和#{}的选择取决于具体需求。#{}适用于为SQL语句的where条件提供参数值,而${}则用于参与SQL语句的语法生成,通常在需要动态构建SQL语句时使用。例如,在进行模糊查询时,使用${}可以更灵活地构建查询条件,如查询姓张的所有员工信息。然而,为了防止SQL注入,应尽量使用#{...

相似回答