有两张表一张是role角色表,一张是模块表module
role表有一个字段模块编号集合module表有一字段是模块简称
role表里面的字段模块编号集合值有很多个module表字段模块简称值,role表里面的字段模块编号集合值且都是用(,)逗号分开的。这个该如何写查询语句 role表:角色表
字段
guid                       角色名           模块编号集合
6c12222244d-4ddf-fda       总经办员工       QTFYSQ,QTFYSH,CGBYJCK,BGSQ,LCSQ
module表:(模块表)
字段:
guid             模块名称         模块编号
fff-cc-d         辅材办公         QTFYSQ
ffff-55-222-f     d                 QTFYSH
ddd-e2333        销售日报          CGBYJCK
如何在知道总经办员工角色名的情况下,根据模块编号集合知道他对应有多少模块 

解决方案 »

  1.   

    create table [role1]([guid] varchar(50),[角色名] varchar(50),[模块编号集合] varchar(500))
    create table [module1]([guid] varchar(50),[模块名称] varchar(50),[模块编号] varchar(50))
    goinsert [role1]
    select '6c12222244d-4ddf-fda', '总经办员工', 'QTFYSQ,QTFYSH,CGBYJCK,BGSQ,LCSQ'insert [module1]
    select 'fff-cc-d', '辅材办公', 'QTFYSQ' union all
    select 'ffff-55-222-f', 'd', 'QTFYSH' union all
    select 'ddd-e2333', '销售日报', 'CGBYJCK'declare @roleName varchar(50)
    set @roleName='总经办员工'select * from [module1]
    where CHARINDEX(',' + [模块编号] + ',',',' + (select [模块编号集合] from [role1] where [角色名]=@roleName) + ',')>0drop table [role1]
    drop table [module1]/*
    (1 row(s) affected)(3 row(s) affected)
    guid                                               模块名称                                               模块编号
    -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
    fff-cc-d                                           辅材办公                                               QTFYSQ
    ffff-55-222-f                                      d                                                  QTFYSH
    ddd-e2333                                          销售日报                                               CGBYJCK(3 row(s) affected)
    */
      

  2.   

    create table [role1]([guid] varchar(50),[角色名] varchar(50),[模块编号集合] varchar(500))
    create table [module1]([guid] varchar(50),[模块名称] varchar(50),[模块编号] varchar(50))
    goinsert [role1]
    select '6c12222244d-4ddf-fda', '总经办员工', 'QTFYSQ,QTFYSH,CGBYJCK,BGSQ,LCSQ'insert [module1]
    select 'fff-cc-d', '辅材办公', 'QTFYSQ' union all
    select 'ffff-55-222-f', 'd', 'QTFYSH' union all
    select 'ddd-e2333', '销售日报', 'CGBYJCK'declare @roleName varchar(50)
    set @roleName='总经办员工'select a.[角色名],b.[模块编号] from [role1] a
    inner join
    ( select *,@roleName as '角色名' from [module1]
     where CHARINDEX(',' + [模块编号] + ',',',' + (select [模块编号集合] from [role1] where [角色名]=@roleName) + ',')>0) b
    on a.[角色名]=b.[角色名]
    drop table [role1]
    drop table [module1]/*
    (1 row(s) affected)(3 row(s) affected)
    角色名                                                模块编号
    -------------------------------------------------- --------------------------------------------------
    总经办员工                                              QTFYSQ
    总经办员工                                              QTFYSH
    总经办员工                                              CGBYJCK
    (3 row(s) affected)
    */
      

  3.   

    数据类型varchar和text在add运算符中不兼容
      

  4.   

    数据类型varchar和text在add运算符中不兼容这个如何操作
      

  5.   

    on a.[角色名]=b.[角色名]这个是错误的,我说了他们之间没有任何对应关系的