找出表中一个字段的前5位或6位等于另一个表的某个字段
规则:先比较表A中productcode的前5位是否与表B中的subcode相同,如果不同,再比较前6位是否与表B中的subcode相同,如果还是不同,则该记录对应的catecode,catename为空,如
表A:
orderno,lineno,productcode
1111 1 667CG016
1111 2 667CG010
2222 1 62AL5142
2222 2 62AL5111
3333 1 6343L031
表B:
catecode,catename,subcode
001 aaa 667CG
002 bbb 62AL50
003 ccc 62AL51
结果:
orderno,lineno,productcode,catecode,catename
1111 1 667CG016 001 aaa
1111 2 667CG010 001 aaa
2222 1 62AL5142 003 ccc
2222 2 62AL5111 003 ccc
3333 1 6343L031 空 空
因为可能的数据量比较大,所以在存储过程中能否不使用游标就能实现呢,谢谢
------解决方案--------------------用2个substr做比较好了
------解决方案--------------------orderno lineno productcode catecode catename
----------- ----------- ----------- -------- ----------
1111 1 667CG016 001 aaa
1111 2 667CG010 001 aaa
2222 1 62AL5142 002 bbb
2222 1 62AL5142 003 ccc
2222 2 62AL5111 002 bbb
2222 2 62AL5111 003 ccc
3333 1 6343L031 NULL NULL
------解决方案--------------------肯定的 因为相当于分了好几次组 性质就跟你用的交叉联接一样
推荐
select * from a join b on substring(a.productcode,1,5)=b.subcode or substring (a.productcode,1,6)=b.subcode
便可