首页 > 数据库 >拼接sql 参数化 where userId in(@userIds)的问题

拼接sql 参数化 where userId in(@userIds)的问题

时间:2023-08-16 21:36:42浏览次数:42  
标签:202 userIds userId 参数 sql 101 where

这里@userIds 如果 写成101,202,301翻译后的sql的where部分会是: where userId in('101,202,301'); 而不是期待的: where userId in(101,202,301);前者前后多了引号。   在我使用ef.core连接mysql查询时,我这样写,就出现查出来的数据比sql脚本查出来的数据要少几条的情况。 所以这样写,可能可以查出来数据,但数据可能不会完整,而且还会是错误的数据。所以以后不要这样写了。   我想起,我们在拼接参数化时,可以这样写,比如 userCode=@search,而不是这样写: userCode='@search';这种在参数化上加了引号的反而还要出错。   在前面最开始,即使我们以为他是数字, 但101,202...这样拼接就是字符串了, 指定的paramter或者默认就是为varchar等字符类型就会在参数前后自动加引号的。根据数据值值推断的默认sqlType类型。 省事的解决办法是,直接不在in后面使用用参数化,直接把值拼接到sql中去,比如 where userId in ({userIds});userids就等于“101,202,303”   非要使用参数化,就一个值一个参数的拼接。 @userId1 101 int类型 @userId2 202 int类型 @userId3 303 int类型 sql写法就是:where userId in(@userId1,@userId2,@userId3); 参数化的值多了,网上说超过2000个,就不得行了。 也没试过。但如果值很多,就不用in好点吧。

标签:202,userIds,userId,参数,sql,101,where
From: https://www.cnblogs.com/HelloQLQ/p/17636235.html

相关文章

  • Mysql安装
    一、准备工作1、下载MySQL从官网地址下载Mysql二、环境检查1、检查是否安装过MySQLrpm-qa|grepmyqlmysql-community-common-5.6.30-2.el7.x86_64mysql-community-release-el7-5.noarchmysql-community-libs-5.6.30-2.el7.x86_64mysql-community-server-5.6.30-2.el7......
  • 如何在达梦数据库中追踪慢SQL
    在达梦数据库中,我们可以通过开启日志记录和设置最小执行时间来追踪慢SQL。下面是具体的步骤:1.修改dm.ini文件使用以下命令编辑dm.ini文件:cd/home/dmdba/dmdbms/data/DAMENG/vimdm.ini在dm.ini文件中找到以下两个参数并进行修改:SVR_LOG_NAME=SLOG_ALLSVR_LOG=1......
  • SQL:DAC模式登陆SQL SERVER 2012 批量执行SQL 脚本文件
    rem将当前目录下的所有*.SQL文件执行一次,并将结果输出文件remfor循环执行SQL命令文件echo=======Begin===========for%%iin(*.sql)do(sqlcmd-A-SLOCALHOST-USA-Pyourpassword-iD:\SQL\IN\%%i-oD:\SQL\OUT\%%i@echoFileName%%i)echo=======end......
  • SQL注入-mysql绕过函数注入
    1.判断注入点通过测试发现,这里过滤了空格和等于号。所以咱们用/**/代替空格,用like代替=,最后将构造的语句进行url编码,使用的是小葵转化工具。所以咱们构造如下语句。//and//1//like//1结果如下图,页面正常显示。接着咱们再构造如下语句。/**/and/**/1/**/like/**/2发现页面报错,说明存......
  • sql row_number(),rank(),row_number()的区别
    第一个,row_nubmer(),这个排序函数的特点是相同数据,先查出的排名在前,没有重复值。像我们这里呢sal相同,先查出来的数据的rank排名优先。如下图:partitionby相当于分组查询第二个,rank()函数,是跳跃排序,相同数据(这里为sal列相同)排名相同,比如并列第1,则两行数据(这里为rank列)......
  • sql复习
    第一章第二件事情:数据库了解1.学习前提条件--会一门语言2.为什么学习数据库?所有的电子设备操作核心----数据编程语言如何进行数据处理:1)--控制台打印数据2)--变量3)---数组4)---Java---集合框架--临时......
  • 如何调整MySQL InnoDB缓冲池大小?如何监控缓冲池效率?常用的warm-up策略有哪些?
    如何调整MySQLInnoDB缓冲池大小?调整InnoDB缓冲池是优化InnoDB性能的关键步骤。InnoDB缓冲池是InnoDB存储引擎在内存中缓存数据和索引的地方,适当地调整它可以大大提高数据库的性能。以下是调整InnoDB缓冲池的步骤和建议:确定合适的大小:InnoDB缓冲池应该设置......
  • MySQL---索引优化与查询优化(子查询优化)
    索引优化与查询优化子查询优化示例:优化后排序优化注意:1、orderby且不使用limit且数据量比较大时,如果select内容和索引字段不匹配,将会进行回表,优化器将不会使用索引,索引失效;......
  • 一个十分简单的增删改查系统(含MYSQL数据库安装教程)
    一个十分简单的增删改查系统(nodejs+vue)该系统采用前后端分离的方式,实现最基本的增、删、改、查功能。前端使用vue框架搭建,后端使用nodejs,数据库用mysql1.准备工作1.1安装nodejs下载nodejs,官网如下Node.js(nodejs.org)选择长期维护版,下载之后直接下一步下一步就行了......
  • 在core项目下通过Dapper对mysql执行批量操作 报at MySql.Data.MySqlClient.MySqlComma
     在core项目下通过Dapper对mysql执行批量操作一直报异常  报PushService=>UpdateKeyWordProductCountTask=>错误信息:Fatalerrorencounteredduringcommandexecution.;;;堆栈信息:atMySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehaviorbehavior)at......