[英]Oracle Query - Replace not working
我有一个查询,其中数据从前端进入IN条件。 现在值以逗号分隔,例如:002,003或002q,4335f,123d,sd4或yuw98
我的查询select * from tbl1 where userid in ('002,004')
值作为select * from tbl1 where userid in ('002,004')
值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'
那么为什么该值不在我的原始查询中运行?
如果您有这样的查询:
select * from tbl1 where userid in ('002,004')
并且,由于某种原因,您必须将值列表表示为字符串(假设在这种情况下要搜索两个值),则可以使用like
查找匹配项:
where ','||userid||',' like ','||'002,004'||','
我鼓励你试图找到一种方法,使in
工作中,通过适当构建查询。 一方面,这将允许查询利用索引。 但是,如果不合理,那么like
方法将起作用。
我以前尝试过类似的方法,但是很快就知道在Oracle中是不可能的。 因此,我制定了另一种解决方案。 希望它听起来不会太傻。 好了,它走了
对于那些正在寻找解决方案的人,我找到了一个。
WHERE INSTRC('001, 002'), userid, 1, 1) > 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.