SQL中怎么实现WHERE IN参数化编译

42次阅读
没有评论

共计 880 个字符,预计需要花费 3 分钟才能阅读完成。

这篇文章主要为大家展示了“SQL 中怎么实现 WHERE IN 参数化编译”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“SQL 中怎么实现 WHERE IN 参数化编译”这篇文章吧。

例子

业务需求,需要通过 SQL 语句从 asset 资产表中查询域名字段在 (“thief.one”,”nmask.cn”,”sec.thief.one”) 范围内的数据库记录,SQL 语句该怎么写呢?

拼接法(错误)

values =  thief.one , nmask.cn , sec.thief.one 
sql =  select * from asset where domain in (+values+) 
print sql

说明:通过将搜索条件以字符串拼接的方式构造 sql 语句,语法上可通过,但存在着安全隐患(参照 sql 注入漏洞)

参数化 1(错误)

values = ((thief.one , nmask.cn , sec.thief.one),)
sql =  select * from asset where domain in %s 
print sql
print values

说明:通过参数化方式,将 where in 后面的查询内容传入。表面上看没问题,但在编译过程中,会将 (“thief.one”,”nmask.cn”,”sec.thief.one”) 整体看成一个字符串,而作为查询条件,与需求不符合。

参数化 2(正确)

values = (thief.one , nmask.cn , sec.thief.one)
sql =  select * from asset where domain in ({}) .format(, .join([ %s  for i in values]))
print sql
print values

说明:通过计算 values 里面字符串个数,动态构造编译的参数。

以上是“SQL 中怎么实现 WHERE IN 参数化编译”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计880字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)