现有
A表
图书条码  索书号
S0437551  A31-44/9 
S0555525  TP312C/49
S0438301  A119.4-44/9 
S0438306  A242.4/7
S0438307  A542.3/27 
S0438308  B142.3/27 
S0438311  B212.3/27 B表
分类编码   分类名称
A1         马克思、恩格斯著作  
A2         列宁著作
A31         军事
TP         计算机
A5         文学
B1         历史
B21        法律B表的分类编码是A表索书号前面包含的字母请问大侠如何从这个两个表查询得出如下表呢?图书条码  索书号        分类名称
S0437551  A31-44/9      军事
S0555525  TP312C/49     计算机
S0438301  A119.4-44/9   马克思、恩格斯著作  
S0438306  A242.4/7      列宁著作
S0438307  A542.3/27     文学
S0438308  B142.3/27     历史
S0438311  B212.3/27     法律

解决方案 »

  1.   

    select a.*,分类名称=(select 分类名称 from B表 where charindex(分类编码,a.索书号)>0)
    from A表 a
      

  2.   


    use tempdb;
    /*
    create table A
    (
    图书条码 nvarchar(20) not null,
    索书号 nvarchar(20) not null
    );
    insert into A(图书条码,索书号)
    values
    ('S0437551','A31-44/9'),
    ('S0555525','TP312C/49'),
    ('S0438301','A119.4-44/9'),
    ('S0438306','A242.4/7'),
    ('S0438307','A542.3/27'),
    ('S0438308','B142.3/27'),
    ('S0438311','B212.3/27');create table B
    (
    分类编码 nvarchar(20) not null,
    分类名称 nvarchar(20) not null
    );
    insert into B(分类编码,分类名称)
    values
    ('A1','马克思、恩格斯著作'),
    ('A2','列宁著作'),
    ('A31','军事'),
    ('TP','计算机'),
    ('A5','文学'),
    ('B1','历史'),
    ('B21','法律');
    */
    select A.图书条码,A.索书号,
    (select B.分类名称 from B where charindex(B.分类编码,A.索书号) > 0) as [分类名称]
    from A