我有一个查询,其中数据从前端进入IN状态。现在值以逗号分隔,例如:002,003或002q,4335f,123d,shd4或yuw98
我的查询的值为select * from tbl1 where userid in ('002,004')
,其中应为userid in ('002','004')
我在下面尝试查询以替换字符串,但它不起作用。
从tbl1中选择*
UserId in (''''|| Replace('004,002', ',', ''',''') || '''');
如果我在
中使用相同的值 Select (''''|| Replace('004,002', ',', ''',''') || '''') from dual;
返回
'004','002'
那为什么值不在我的原始查询中运行?
答案 0 :(得分:0)
如果您有这样的查询:
select * from tbl1 where userid in ('002,004')
并且,出于某种原因,你有将值列表表示为字符串(假设你想在这种情况下搜索两个值),那么你可以使用like
找到匹配:
where ','||userid||',' like ','||'002,004'||','
我鼓励您尝试通过正确构建查询来找到使in
正常工作的方法。首先,这将允许查询利用索引。但是,如果不合理,那么like
方法就可以了。
答案 1 :(得分:0)
之前我尝试过类似的事情,但很快就知道在甲骨文中这是不可能的。所以,我找到了另一个解决方案。希望它听起来不太傻。好的,这就是
答案 2 :(得分:0)
对于那些正在寻找解决方案的人,我找到了一个。
WHERE INSTRC('001, 002'), userid, 1, 1) > 0