CREATE TABLE PEOPLE 
(
    NUM CHAR(12) PRIMARY KEY,
    NAME CHAR(20),
    JOB  CHAR(40)  /* 我想要的是从 (C++开发工程师,JAVA软件工程师,PHP高级工程师)这几个中选择一个、二个或者是全
                  选,这个该怎样实现??*/
)求高手指点迷津急啊

解决方案 »

  1.   

    mssql表中不存在什么属性让你选的,不像oracle可以使用嵌套表或可变数组存你的值就你上面的就可以,取数据以","分隔开,显示在页面中,插入数据按选择的条件依次以","分隔插入就可以了一般都会建三个表:people,job,peoplerefjob
      

  2.   


    if OBJECT_ID('PEOPLE','U') is not null drop table PEOPLE
    go
    if OBJECT_ID('jobtype','U') is not null drop table jobtype
    go
    --想创建一张工作性质维护表,把数据维护进去
    create table jobtype
    (
    id int,
    [description] varchar(2000)
    )
    go
    insert into jobtype
    select 1,'C++开发工程师' union all
    select 2,'JAVA软件工程师' union all
    select 3,'PHP高级工程师' 
    go
    select * from jobtype
    go
    --创建表是,使用Check 约束,只可以是1 C++开发工程师,2 JAVA软件工程师,3 PHP高级工程师
    CREATE TABLE PEOPLE  
    (
      NUM CHAR(12) PRIMARY KEY,
      NAME CHAR(20),
      --增加check 约束,对应jobtype表信息
      JOBType varchar(40) check(charindex(JOBType,'123')>0)
    )
    go
    insert into PEOPLE 
    select 1,'test','12'
    go
    select 
    a.NUM,
    a.NAME,
    --翻译信息,但是不建议采用这种方式,楼主可以采用在清单里下功夫,
    --比如增加 【4 C++开发工程师 and JAVA软件工程师】 等方式,这样就不需要下面这么费劲的转换
    Jobtype=stuff((select ','+[description] from jobtype 
    where charindex(ltrim(id),a.JOBType)>0  for xml path('')),1,1,'')
    from PEOPLE a
    /*
    (1 row(s) affected)
    NUM          NAME                 Jobtype
    ------------ -------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1            test                 C++开发工程师,JAVA软件工程师(1 row(s) affected)
    */
      

  3.   


    CREATE TABLE PEOPLE  
    (
      NUM CHAR(12) PRIMARY KEY,
      NAME CHAR(20),
      JOB CHAR(40) 
      constraint ck_PEOPLE_job check(charindex('C++开发工程师',JOB)>0 or charindex('JAVA软件工程师',JOB)>0 or charindex('PHP高级工程师',JOB)>0)
    )
      

  4.   

    我知道ORACLE 相当强大。但这次我用的数据库是 SQL SERVER 2008 ,有没有好的解决办法啊???
      

  5.   

    不行就用1楼的
    新建一个job表,有个字段可以关联人员表,
    job表存清单,
    peoplerefjob 是维护表...