一个sql语句问题,等待解决

bm1408 2008-12-21 04:18:53

因我另一表中某一字段存放的内容为0101~0201,现在我把字段转变为如下方式:
SELECT REPLACE(REPLACE(CHR(39)||'0101~0102~'||')', '~)', CHR(39)), '~', CHR(39)||','||CHR(39)) FROM DUAL
运行结果也为0101,0102

我把以上sql结合起来,却得不出结果了?
select * from guarfile where guarno
in (SELECT REPLACE(REPLACE(CHR(39)||'0101~0102~'||')', '~)', CHR(39)), '~', CHR(39)||','||CHR(39)) FROM DUAL

如果修改呢?
...全文
152 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyong369 2008-12-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jdsnhan 的回复:]
in 的内容应该是个结果集合,或者说是个数组,而不是一个字符串;如果是一个串,那么认为数据的长度是1.
[/Quote]
software815 2008-12-25
  • 打赏
  • 举报
回复
学习下。。
yaomin65 2008-12-25
  • 打赏
  • 举报
回复
up
jinjazz 2008-12-25
  • 打赏
  • 举报
回复
--建立测试环境
create table test(guarno varchar(10) );
insert into test select '0101' from dual ;
insert into test select '0102' from dual ;
insert into test select '0103' from dual ;
insert into test select '0104' from dual ;
--测试语句
select *from test
where '~0101~0102~' like '%~'||guarno||'~%';
--清除测试环境
drop table test;

/*--测试结果
GUARNO
0101
0102
*/
jinjazz 2008-12-25
  • 打赏
  • 举报
回复
select * from guarfile  where  '~272~273~' like '%~'||guarno||'~%'  

sjq521521 2008-12-22
  • 打赏
  • 举报
回复
学习中...
yangzeDB 2008-12-22
  • 打赏
  • 举报
回复
declare str varchar2(10) :='1,2';
begin
select id, idname, type from t_20081028 where id in (str);
end;

和这样的意思应该差不多. 把它放到in里.应该是不行的
jdsnhan 2008-12-21
  • 打赏
  • 举报
回复
in 的内容应该是个结果集合,或者说是个数组,而不是一个字符串;如果是一个串,那么认为数据的长度是1.
sleepzzzzz 2008-12-21
  • 打赏
  • 举报
回复
如果只是针某条具体的数据,应该这样表达:
select * from guarfile where guarno = 串截取第一段 or guarno = 串截取第二段;


如果是针对表中字段的内容,则先把字符串分拆成行,再select * from guarfile where guarno in (分拆后的列);
参考这个链接17楼的第二段SQL:
http://topic.csdn.net/u/20080721/12/c87d1a1d-b817-4de6-84ac-4f6ab56ef15a.html?seed=714459994#

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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