sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件
select * from tablenmae where id in(1,2,3)
这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql语句
string aa=”1,2,3”;
string sqltxt=”select * from tablename where id in (“+aa+”)”;
然后执行 sqltxt
这样的风险是存在sql注入漏洞。那么如何在 in 的条件中使用变量呢?可以把形如“1,2,3”这样的字符串转换为一个临时表,这个表有一列,3行,每一行存一个项目(用逗号分隔开的一部分)
该函数可以这样写:
然后sql语句就可以这样了
declare str vchar(100)
set str=’1,2,3’
select * from tablename where id in (select str2table from StrToTable(@str) )
SQL Server IN子句安全使用
本文介绍了一种在SQL Server中将逗号分隔的字符串安全地转换为表的方法,用于IN子句中,避免SQL注入风险。通过创建一个临时表来存储字符串中的每个元素,确保了查询的安全性和效率。
870

被折叠的 条评论
为什么被折叠?



