如何在LIKE语句中使用参数,以及动态执行SQL语句

如题所述

第1个回答  2017-03-18
拼SQL的方法不好,因为有安全的风险,容易造成SQL的语法错误甚至SQL注入攻击。安全的方法是将'%'加入到参数中:

--查询图书表中与查询关键字匹配的书籍信息
ALTER PROCEDURE [dbo].[SP_SelectByKeywordProc]
(
@Keyword varchar(40)
)
AS
BEGIN
DECLARE @SqlString nvarchar(400);
SET @SqlString = N'SELECT * FROM BOOK WHERE BOOK_NAME LIKE @Key_word ';
SET @KeyWord = N'%' + Keyword + '%';

EXEC SP_EXECUTESQL @SqlString, N'@Key_word varchar(40)', @Key_word= @KeyWord;
RETURN(0);
END

这里还要注意带参数的SP_EXECUTESQL系统存储过程的使用方法:
1、前两句为字符串,其中第一句为执行的SQL语句;第二句为语句中参数的定义,如果有多个变量则用逗号分隔;
2、后面的子句为赋值语句,可以有多个;
3、执行的动态SQL语句应当为ntext/nchar/nvarchar型,否则会报错:“Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.”

MSDN上的例子:
DECLARE @IntVariable int;
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @max_title varchar(30);

SET @IntVariable = 197;
SET @SQLString = N'SELECT @max_titleOUT = max(Title)
FROM AdventureWorks.HumanResources.Employee
WHERE ManagerID = @level';
SET @ParmDefinition = N'@level tinyint, @max_titleOUT varchar(30) OUTPUT';

EXECUTE sp_executesql @SQLString, @ParmDefinition, @level = @IntVariable, @max_titleOUT=@max_title OUTPUT;

SQL语句like怎么使用多
SQL语句中的"LIKE"是一个用于模式匹配的关键词,其使用方法如下:首先,你需要准备一个测试表,如图所示,通过结构定义和数据插入来熟悉其操作。创建表后,可以执行SQL查询来查看所有记录,如下代码示例:sqlSELECT * FROM your_table;接下来,当你想要搜索包含特定模式的记录,比如"科技"或"IT",你可以...

sql 中 like 语句的用法?
4. 使用转义字符:- 如果模式中有特殊字符需要被忽略,可以使用`ESCAPE`关键字,如`LIKE '%!%%' ESCAPE '!'`。这将匹配'%!%',但会忽略'!'作为转义字符,结果是2行受影响。5. 限制转义字符的使用:- 在某些情况下,你可能只想在特定位置转义字符,`LIKE '%!_%' ESCAPE '!'`,这将匹配以...

SQL语句SELECTLIKElike用法(sql中的like使用方法)
LIKE语句的语法格式是:select*from表名where字段名like对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。假设有一个数据库中有个表table1,在table1中有两个字段,分别是name和sex二者全是字符型数据。现在我们要在姓名字段中查询以“张”字开头的记录,...

mysql怎么用like检索字段中带有数字的语句?
UPPER(str)CONCAT(str1,str2,...)因此当我们要进行中英文混合匹配检索且要忽略英文大小写时,可以使用如下例所示的 SQL 语句:SELECT * FROM username WHERE UPPER(username) LIKE BINARY CONCATt('%',UPPER('a中文b'),'%')在该 SQL 中,将搜索的字段及检索的内容都进行大写转换后,再进行二进...

sql语句like用法(like用法)
Like作为动词,有多种用途,它在SQL中主要应用于以下几种结构:喜好表达<\/: 例如,like + 'sb.\/sth.' 描述的是对某人或某物的喜好。"你喜欢米饭\/热狗\/蔬菜吗?" 这个句子可以改写为:"Do you have a liking for rice, hot dogs, or vegetables?"喜欢做某事<\/: like to do 和 like doing ...

SQL中like的用法
1、like中or的应用:or指或者的意思,如果sql语句中用到这个连接字符,就说明查询的结果只要符合其中一种条件就可以。例:SELECT t1 FROM table_test WHERE t1 LIKE '%a%' OR t1 LIKE '%b%'2、like中and的应用:and指并且的意思,如果sql语句中用到这个连接字符,就说明查询的是要完全符合sql...

SQL语句like怎么使用多个like条件...
1、第一步,新建测试表,见下图,转到下面的步骤。2、第二步,完成上述步骤后,插入测试数据,见下图,转到下面的步骤。3、第三步,完成上述步骤后,查看表中的所有记录,代码见下图,转到下面的步骤。4、第四步,完成上述步骤后,编写sql,包括“科技”以及“ IT”等记录,代码见下图,转到下面的...

C#中 SQL语句 带参数的like 查询怎么写
SQL模糊查询,使用like比较字,加上SQL里的通配符,请参考以下:-- 1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。-- 2、LIKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。-- 3、LIKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串...

在sql语句中,like所有的用法
在sql结构化查询语言中,like语句有着至关重要的作用。like语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。A:% 包含零个或多个字符的任意字符串:1、like'Mc%' 将搜索以字母 Mc 开头的...

MyBatis中like的几种使用方式
首先,让我们来看看“${参数名}”的用法。这种方式直接将参数值插入到 SQL 语句中,但其缺点是容易导致 SQL 注入攻击,因此在安全性要求较高的场景下不宜使用。接着,我们看看“#{参数名}”的运用。与“${参数名}”相比,“#{参数名}”使用了占位符的方式,将参数进行预编译处理,确保了参数的...

相似回答