oracle 字符串的 一个小问题, 往友友们帮帮忙

sage425 2011-09-05 09:19:01
Oracle中查询中有一字段 存储的是 纯数字组成的字符串 结构 如:34,54,34,2
我现在要根据这个字段查询
类似 :select * from tb_name where id in(34,54,34,2)
也就是
知道字符串 ID="34,54,34,2 "
在Oracle中查 值为ID 的结果。
...全文
174 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
htziyou 2011-09-06
  • 打赏
  • 举报
回复
select * from tb_name where instr('34,54,34,2',id)>0;
hao1hao2hao3 2011-09-06
  • 打赏
  • 举报
回复
try



select * FROM TB WHERE instr(','||'1,51,31,41,51'||',',','||'51'||',') > 0




在两个字符串两边各加一个逗号。
sage425 2011-09-06
  • 打赏
  • 举报
回复
得到的 数据有重复的
sage425 2011-09-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 benchim888 的回复:]

你管他是几,只要 where Instr('1,51,31,41,51','51') > 0 即可。
引用 6 楼 sage425 的回复:

引用 5 楼 benchim888 的回复:

SQL code

--instr函数即可
select * from tb_name where instr('34,54,34,2',id)>0;


好像 有问题额
比如:se……
[/Quote]

问题 是 我带到的 数据有重复的额 所有 还没有别的方法
oO寒枫Oo 2011-09-06
  • 打赏
  • 举报
回复
那就这样 试试

select (length('1,51,31,41,51') - length(replace('1,51,31,41,51','51','')))/length('51') from dual;
luckyzhangye 2011-09-05
  • 打赏
  • 举报
回复
select * from tb_name where id =34||','||54||','||'34'||','||2
opps_zhou 2011-09-05
  • 打赏
  • 举报
回复

select * from tb_name
where instr(',' || replace(id_list, ' ','') || ',', ',' || id || ',') > 0

jimmylin040 2011-09-05
  • 打赏
  • 举报
回复
这个如果每条记录数字中间的逗号出现中文逗号和英文逗号就不好处理了啊
BenChiM888 2011-09-05
  • 打赏
  • 举报
回复
你管他是几,只要 where Instr('1,51,31,41,51','51') > 0 即可。
[Quote=引用 6 楼 sage425 的回复:]

引用 5 楼 benchim888 的回复:

SQL code

--instr函数即可
select * from tb_name where instr('34,54,34,2',id)>0;


好像 有问题额
比如:select Instr('1,51,31,41,51','51')
from dual; 我得到的 不是 2 而是3 的 ???
[/Quote]
sage425 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 benchim888 的回复:]

SQL code

--instr函数即可
select * from tb_name where instr('34,54,34,2',id)>0;
[/Quote]

好像 有问题额
比如:select Instr('1,51,31,41,51','51')
from dual; 我得到的 不是 2 而是3 的 ???
BenChiM888 2011-09-05
  • 打赏
  • 举报
回复

--instr函数即可
select * from tb_name where instr('34,54,34,2',id)>0;

hnczljt 2011-09-05
  • 打赏
  • 举报
回复
先把sql语句存储在字符创中,再执行字符串;

DECLARE v_Sql VARCHAR2(1000);
v_ID VARCHAR2(50);
BEGIN
v_ID := '34,54,34,2';
v_Sql := select * from tb_name where id in('|| v_ID || ')';
EXECUTE IMMEDIATE v_Sql;
END;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧