关于in操作怎么使用占位符

select * from obj_question where id in (#para(objIds))

假如传入的参数只有一个ID是有结果的,如果传入两个ID,并且用,隔开就没有结果了,请问一下为什么啊?

评论区

Code_Cat

2020-03-20 13:31

有人没有啊。。。

chcode

2020-03-20 13:34

where 1
#if(list)
and a.appId in (
#for(id : list)
#para(id)#(for.last ? "": ",")
#end
)

Code_Cat

2020-03-20 13:42

@JFinal 请问关于in操作有更好的写法吗?为什么我传入xxx,xxx不能正确查出来呢,我明明外面加了括号的 id in (#para(objIds))

Code_Cat

2020-03-20 13:45

@chcode 谢谢,还请教你一个问题,为什么按照我的写法为什么不能查出结果呢

chcode

2020-03-20 13:51

@Code_Cat 需要多个?占位符,一个?占位符不行

Code_Cat

2020-03-20 13:52

@chcode (?)这里虽然是一个占位符,但是我传入的也就是一个String,比如xxx,xxx,所以我不太明白

chcode

2020-03-20 13:54

@Code_Cat 如果是字符类型 每个值都要有单引号包起来

Code_Cat

2020-03-20 13:57

@chcode 我想说的是我是用单引号包起来的,为此还专门写了一个方法

Code_Cat

2020-03-20 14:00

@chcode 不好意思,我刚才又试了一下,出来结果了,谢谢你啊

chcode

2020-03-20 14:02

@Code_Cat 可能是jdbc 不支持,反正推荐我上面的用法

doubuxingle

2020-03-20 14:02

你这个写法等价于:select * from obj_question where id in (‘xxx,xxx’)
in() 这个是支持多参数的,一个参数对应一个占位符,从你的这种写法来看in()里面你只传了一个参数in (‘xxx,xxx’),实际你想传两个参数in('xxx','xxx')
这样看出来了么。

Code_Cat

2020-03-20 14:09

@chcode 去网上搜了一下,发现这个是数据库的原因,最好使用find_in_set(id,?)这个方法

Code_Cat

2020-03-20 14:15

@doubuxingle 谢谢,明白了

热门反馈

扫码入社