有一个表如下
姓名   选修课程
张三   篮球/健美操
李四   足球/乒乓球
王五   篮球/乒乓球/足球
赵六   健美操/足球/篮球
要求能够查询出以下结果
选修篮球、足球等各课程学生名单表如下:
姓名   选修课程
张三   篮球
王五   篮球
赵六   篮球
姓名   选修课程
李四   足球
王五   足球
赵六   足球并将这些表批量导入Access数据库

解决方案 »

  1.   

    ---例子declare @str varchar(1000)set @str='篮球'
    select * from 表 where charindex('/'+@str+'/','/'+选修课程+'/')>0
      

  2.   

    --先寫出查詢的存儲過程
    Create ProceDure SP_TEST(@选修课程 Nvarchar(20))
    As
    Begin
    Select 姓名, @选修课程 As 选修课程 From 表 Where CharIndex(@选修课程, 选修课程) > 0
    End
    GO
    ---調用
    EXEC SP_TEST N'篮球'
    EXEC SP_TEST N'足球'
    GO
      

  3.   

    select name,'篮球'
    from table where charindex('篮球',type)>0select name,'足球'
    from table where charindex('足球',type)>0
      

  4.   

    --先在D盤建立一個名為表的ACCESS檔,然後在裡面建立一個名為“表”的表,結構和SQL的表一致。
    --以下代碼測試OK --創建測試環境
    Create Table 表
    (姓名 Nvarchar(20),
     选修课程 Nvarchar(200)) 
    --插入數據
    Insert 表 Select N'张三',   N'篮球/健美操'
    Union All Select N'李四',   N'足球/乒乓球'
    Union All Select N'王五',   N'篮球/乒乓球/足球'
    Union All Select N'赵六',   N'健美操/足球/篮球'
    GO
    --創建存儲過程
    Create ProceDure SP_TEST(@选修课程 Nvarchar(20))
    As
    Begin
    Insert Into OpenRowSet('Microsoft.Jet.OLEDB.4.0',   'D:\表.mdb' ; 'admin'; '', 表) 
    Select 姓名, @选修课程 As 选修课程 From TEST.dbo.表 
    Where CharIndex(@选修课程, 选修课程) > 0
    End
    GO
    --測試
    EXEC SP_TEST N'篮球'
    EXEC SP_TEST N'足球'
    GO
    --刪除測試環境
    Drop Table 表
    Drop ProceDure SP_TEST
      

  5.   

    select 姓名, 选修课程='篮球' from 表 where charindex('篮球', 选修课程) > 0
    select 姓名, 选修课程='足球' from 表 where charindex('足球', 选修课程) > 0
      

  6.   

    ---例子
    create table tb(姓名 varchar(10),选修课程 varchar(1000))
    insert tb
    select '张三','篮球/健美操'
    union select '李四','足球/乒乓球'
    union select '王五','篮球/乒乓球/足球'
    union select '赵六','健美操/足球/篮球'go create proc p1 @str varchar(1000)
    asdeclare @sql varchar(1000)
    set @sql='select 姓名,选修课程='''+@str+''' from tb where charindex(''/''+'''+@str+'''+''/'',''/''+选修课程+''/'')>0'
    exec(@sql)go exec p1 '篮球'drop proc p1
    drop table tb
      

  7.   

    insert into t
    from 
    (
    select 姓名, 选修课程='篮球' from 表 where charindex('/'+'篮球'+'/', '/'+选修课程+'/') > 0
    union all
    select 姓名, 选修课程='足球' from 表 where charindex('/'+'足球'+'/','/'+ 选修课程+'/') > 0
    )a