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

解决方案 »

  1.   

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

  2.   

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

  3.   

    --先寫出查詢的存儲過程
    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
      

  4.   

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

  5.   

    INSERT INTO T
    FROM 
    (select name,'篮球'
    from table where charindex('/'+'篮球'+'/','/'+type+'/')>0
    UNION ALL
    select name,'足球'
    from table where charindex('/'+'足球'+'/','/'+type+'/')>0
    )A
      

  6.   

    --先在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