这样的处理该怎么做
有两个表
tb1
CODE
1A
3A
tb2
TYPE1 TYPE2 TYPE_CODE
AT 1 T1
AT 2 T2
AT 3 T3
BT 1 B1
现在想根据tb1的CODE取出tb2的TYPE_CODE,结果如下
TYPE_CODE
T1
T3
就是把tb1的CODE分解开,A对应TYPE1的AT, 前面的数字对应TYPE2的数字
该怎么做呢
------解决方案--------------------select tb2.TYPE_CODE from tb2,tb1
where tb2.TYPE1 = left(tb1.CODE,1) and tb2.type2 = right(tb1.code,1)
------解决方案--------------------create table tb1(code varchar(10))
insert into tb1
select '1A '
union all select '3A '
create table tb2(type1 varchar(10),type2 int,type_code varchar(10))
insert into tb2
select 'AT ',1, 'T1 '
union all select 'AT ',2, 'T2 '
union all select 'AT ',3, 'T3 '
union all select 'BT ',1, 'B1 '
select type_code from tb2,tb1
where charindex(tb1.code,tb2.type_code+tb2.type1)> 0
------解决方案----------------------创建测试环境
create table tb1(CODE varchar(10))
create table tb2(TYPE1 varchar(10),TYPE2 varchar(10),TYPE_CODE varchar(10))
--插入测试数据
insert tb1(CODE)
select '1A ' union all
select '3A '
insert tb2(TYPE1,TYPE2,TYPE_CODE)
select 'AT ', '1 ', 'T1 ' union all
select 'AT ', '2 ', 'T2 ' union all
select 'AT ', '3 ', 'T3 ' union all
select 'BT ', '1 ', 'B1 '
--求解过程
select type_code from tb2
where exists
(select 1 from tb1
where left(tb2.type1,1) = right(tb1.code,1)
and tb2.type2 = left(tb1.code,1) )
--删除测试环境
drop table tb1,tb2
/*--测试结果
type_code
----------
T1
T3
*/