作者sanwind (疾风迅雷)
看板Database
标题Re: [SQL ] 请问要如何转换复选的栏位呢?
时间Wed Jan 2 23:53:48 2008
※ 引述《sanwind (疾风迅雷)》之铭言:
: 使用DB:MS SQL 2000
: 因为在做有关问卷的JOB,当中有遇到复选的问题
: 比如:
: 现有个TABLE A
: 内容为
: S_ID CHOISE
: 1 A,B,C
: 2 B,C
: 3 A,C
: 现想要使用SQL语法将之写入另一个TABLE B
: 变成:
: S_ID CHOISE_A CHOISE_B CHOISE_C
: 1 1 1 1
: 2 1 1
: 3 1 1
: 呈现这样的状态。因为要统计各选项的人数。
: 请问要怎麽写这样的语法呢?谢谢
啊...我似乎试出方法来了...不过是在同一个TABLE中
就是在TABLE A中新增栏位CHOISE_A,CHOISE_B,CHOISE_C
使之成为:
S_ID CHOISE CHOISE_A CHOISE_B CHOISE_C
1 A,B,C
2 B,C
3 A,C
然後执行
UPDATE TABLE A
SET CHOISE_A = '1'
WHERE CHARINDEX('A',CHOISE) > 0; --CHARINDEX是判断CHOISE栏位中,A的位置是多少
--因此只要是有A在,那就一定大於0罗
UPDATE TABLE A
SET CHOISE_B = '1'
WHERE CHARINDEX('B',CHOISE) > 0;
UPDATE TABLE A
SET CHOISE_C = '1'
WHERE CHARINDEX('C',CHOISE) > 0
如此一来,就会呈现下面这样的状态:
S_ID CHOISE CHOISE_A CHOISE_B CHOISE_C
1 A,B,C 1 1 1
2 B,C 1 1
3 A,C 1 1
这样就可以简单的计算出有选A,选B,选C的各有几人了
唯一的缺点就是:UPDATE 满吃资源的,如果资料量一大就会慢到不行了
如果版友有更好的作法,也请指导一下罗~ 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.1.29