两个表。
第一个 班级表
有:编号,届号,班级名称
    1,2008,初二(1)
    2,2008,初二(2)
    3,2009,初三(1)
    4,2009,初三(2)
    等等第二个表  教师表
有:编号,教师名,所教班级
    1,林路,1|2|6
    2,陈硕,3|4|
    等等
求:2008届教师名单?sql能直接查询吗?在线等,谢谢
    
 

解决方案 »

  1.   

    select 教师名 
    from 教师表 a,班级表 b
    where b.届号 = '2008'
    and charindex('|'+a.编号+'|','|'+b.所教班级+'|')>0 
      

  2.   


    select 教师名
    from 教师表 a,班级表 b
    where b.届号 = '2008'
    and charindex('|'+b.编号+'|','|'+a.所教班级+'|')>0 写错一个缩写
      

  3.   

    SELECT DISTINCT 教师名
    FROM 班级表 AS C, 教师表  AS T
    WHERE 届号='2008' AND CHARINDEX('|'+RTRIM(C.编号)+'|', '|'+所教班级+'|')>0
      

  4.   


    --如果班级表中的班级名称和教师表中的所教班级对应,不考虑年级。这样:。
    --> 测试数据: [班级表]
    if object_id('[班级表]') is not null drop table [班级表]
    create table [班级表] (编号 int,届号 int,班级名称 varchar(7))
    insert into [班级表]
    select 1,2008,'初二(1)' union all
    select 2,2008,'初二(2)' union all
    select 3,2009,'初三(1)' union all
    select 4,2009,'初三(2)'
    --> 测试数据: [教师表]
    if object_id('[教师表]') is not null drop table [教师表]
    create table [教师表] (编号 int,教师名 varchar(4),所教班级 varchar(10))
    insert into [教师表]
    select 1,'林路','1|2|6' union all
    select 2,'陈硕','3|4'select distinct 教师名 from 教师表 a,班级表 b where 届号=2008 and 
    charindex('|'+ltrim(substring(班级名称,patindex('%[0-9]%',班级名称),charindex(')',班级名称)-patindex('%[0-9]%',班级名称)))+'|',
    '|'+所教班级+'|')>0 
    --结果:
    教师名
    ----
    林路
      

  5.   

    create table [班级表] (编号 int,届号 int,班级名称 varchar(7))
    insert into [班级表]
    select 1,2008,'初二(1)' union all
    select 2,2008,'初二(2)' union all
    select 3,2009,'初三(1)' union all
    select 4,2009,'初三(2)'
    create table [教师表] (编号 int,教师名 varchar(4),所教班级 varchar(10))
    insert into [教师表]
    select 1,'林路','1|2|6' union all
    select 2,'陈硕','3|4'select distinct m.教师名
    from 班级表 n ,教师表 m
    where n.届号 = 2008 and charindex('|' + cast(n.编号 as varchar) + '|' , '|' + m.所教班级 + '|') > 0drop table 班级表 ,教师表/*
    教师名  
    ---- 
    林路(所影响的行数为 1 行)
    */
      

  6.   


    select distinct [教师名] from [班级表] c,[教师表] t
    where c.[届号]=2008 and patindex('%'+convert(varchar,c.[编号])+'%',t.[所教班级])>0