因我另一表中某一字段存放的内容为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如果修改呢?
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#
begin
select id, idname, type from t_20081028 where id in (str);
end;和这样的意思应该差不多. 把它放到in里.应该是不行的
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
*/