作者adrianshum (Alien)
看板Database
标题Re: [SQL ] 请问要如何转换复选的栏位呢?
时间Thu Jan 3 01:11:27 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
: 呈现这样的状态。因为要统计各选项的人数。
: 请问要怎麽写这样的语法呢?谢谢
选择的英文是 Choice 不是 Choise
通常这种情况,会用:
SID CHOICE
1 A
1 B
1 C
2 B
2 C
3 A
3 C
这种做法的... 你的第二种做法,要是以後要加新选项
又要改 schema 了。
而你的问题,ANSI SQL 该没有直接的解法。可以利用各
DBMS 的 string finding function. 比如 Oracle 的话,
insert into T2(S_SID, C_A, C_B, C_C)
select
sid,
decode(instr(choice, 'A'), 0, 0, 1),
decode(instr(choice, 'B'), 0, 0, 1),
decode(instr(choice, 'C'), 0, 0, 1)
from T1
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.103.235.35