首页新闻找找看学习计划

关于sql语句中的占位符?

0
[待解决问题]

delete from table where id in (?)

*?是一串字符串,用逗号分隔的..

请问这句语句不能执行的原因..

感谢大家的积极回答!

储宏庆的主页 储宏庆 | 菜鸟二级 | 园豆:202
提问于:2019-09-09 18:23
< >
分享
所有回答(4)
0

提示什么错误,如果字符串为空,肯定错误。如果是非数字,每项两边要加单引号。如果逗号后是空也是错误

geass.. | 园豆:1726 (小虾三级) | 2019-09-10 10:03

我是想传来一串id..,id为字符串,
? 代表的是一串字符串id,中间有逗号分割的,比如abc,abd这串字符串,想进行批量删除,但这样传进去是错误的 不为空,已判断过

支持(0) 反对(0) 储宏庆 | 园豆:202 (菜鸟二级) | 2019-09-10 11:43

@储宏庆: abc,abd 是字符串,每项两边要加单引号 'abc','abd'

支持(1) 反对(0) geass.. | 园豆:1726 (小虾三级) | 2019-09-10 13:10
1

(?,?,?,?,?,?,?) 这样写,逗号不算值,不能占位

电磁魔王喵喵 | 园豆:639 (小虾三级) | 2019-09-10 11:19
0

?="'"+"1,2,3,4".Replace(",","','")+"'"

张朋举 | 园豆:1283 (小虾三级) | 2019-09-10 16:10
0

不知道你是不是这意思 你是想拼接个字符串放到in里面之后 执行批量删除的话 那实现层一定要拼装好
还要注意是什么数据库oracle不识别双引号
打个比方mybatis mysql
StringBuffer ids = new StringBuffer();
int[] data = new int[3];
data[0]=1;data[1]=2;data[2]=3;
for(int i=0;i<data.length;i++){
ids.append("'").append(data[i]).append("',");
}
map.put("ids",ids);
sql:delete from tablename where id in (#{ids});
或者 可以不用对参数处理瓶装直接使用foreach进行遍历删除
当然我指的是mybatis得情况下 要是别的orm框架 就再换别的解决办法

KpGo | 园豆:17 (初学一级) | 2019-09-10 17:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册