人的特长,有三个选项:游泳、绘画、书法等。如果他会“游泳”,那么值为“01”,如果会“游泳、书法”,那么值为“01,03”
现在如果我想把它拆分成“游泳、绘画、书法”三个字段,每个字段根据原始字段的内容判断是/否那么我该怎么样写语句?是否先要把全部信息都处理一下,才能够进行拆分?小弟对SQL语句不太熟悉,请各位大大帮忙!
现在如果我想把它拆分成“游泳、绘画、书法”三个字段,每个字段根据原始字段的内容判断是/否那么我该怎么样写语句?是否先要把全部信息都处理一下,才能够进行拆分?小弟对SQL语句不太熟悉,请各位大大帮忙!
解决方案 »
- 求助:Aborting because available SYSTEM tablespace
- 在Oracle数据库中的大表联合查询速度慢的问题
- oracle导入问题
- SQL写法问题.使用哪位方法写效率最高.
- 求助:请问怎么把多个表的建表语句导到sql脚本中?
- 80分求,oracle如何在不删列数据的情况下从varchar2改为number型
- oracle9i中,连接的进程不断增加,一直不释放。直到达到process限制
- bdf档案转换成dmp档案问题
- 不安装ORACLE客户端访问ORACLE数据库的方法
- 怎么修改internal的密码??
- authorware连接Oracle问题
- 去除重复数据
刘长艳 R200903000014 01,
袁文珍 R200903000015 03,
黄珍 R200903000019 01,02,
王明俊 R200903000020 01,
罗令军 R200903000021 02,03,01,
曾军富 R200903000022 01,我想在右侧再新建3个列,分别为游泳,绘画,书法,然后里面的值从“爱好”这列来取。谢谢!
update tab1 set 游泳='是' where 爱好 like '%01%';
update tab1 set 绘画='是' where 爱好 like '%02%';
update tab1 set 书法='是' where 爱好 like '%03%';
执行完上面的在把下面的执行下
update tab1 set 游泳='否' where 游泳 is null;
update tab1 set 绘画='否' where 绘画 is null;
update tab1 set 书法='否' where 书法 is null;
create table new_table as
select 姓名,编号,case when 爱好 like '%01%' then '是' else '否' end 游泳,
case when 爱好 like '%02%' then '是' else '否' end 绘画,
case when 爱好 like '%03%' then '是' else '否' end 书法
from old_table
(
name varchar2(10),
code char(20),
interest varchar2(20),
swim char(1),
draw char(1),
writeing char(1)
);insert into t_interest values('刘长艳','R200903000014','01,','','','');
insert into t_interest values('袁文珍','R200903000015','03,','','','');
insert into t_interest values('黄珍','R200903000019','01,02,','','','');
insert into t_interest values('王明俊','R200903000020','01,','','','');
insert into t_interest values('罗令军','R200903000021','02,03,01,','','','');
insert into t_interest values('曾军富','R200903000022','01,','','',''); update t_interest set
swim = (case when (instr(interest,'01',1,1) = 0) then 'N' else 'Y' end),
draw = (case when (instr(interest,'02',1,1) = 0) then 'N' else 'Y' end),
writeing = (case when (instr(interest,'03',1,1) = 0) then 'N' else 'Y' end)
commit;select * from t_interest;
经测试通过SQL> select * from person;
NAME NO HABIT
-------------------- -------------------- --------------------
刘长艳 R200903000014 01,
袁文珍 R200903000015 03
黄珍 R200903000019 01,02,
王明俊 R200903000020 01,
罗令军 R200903000021 02,03,01,
曾军富 R200903000022 01,
6 rows selected
SQL>
SQL> select name,no,
2 case when habit like '%01%' then '是' else '否' end swim,
3 case when habit like '%02%' then '是' else '否' end printing,
4 case when habit like '%03%' then '是' else '否' end writting
5 from person;
NAME NO SWIM PRINTING WRITTING
-------------------- -------------------- ---- -------- --------
刘长艳 R200903000014 是 否 否
袁文珍 R200903000015 否 否 是
黄珍 R200903000019 是 是 否
王明俊 R200903000020 是 否 否
罗令军 R200903000021 是 是 是
曾军富 R200903000022 是 否 否
好像以前suncrafted兄弟,有帮人解决过这样的case的吧