日期:2014-05-18  浏览次数:20397 次

根据不同的条件来进行不同的UPDATE
各位朋友:小弟的表1如下:
id     name     card_id         date
1    李三     a123               2007-5-11
10 李四     b234               2007-6-11
100   王五     c345               2007-6-12

问题1:首先取“date”这个字段的年份和月份,组成长度为4年字符串,如“2007-5-11”,则变成“0705”,,然后根据的id长度作判断,如果id长度为1的话,就在原来的基础上加三个零“000”,长度为2的话,就在原来的基础上加两个零“00”,长度为3的话,就加1个零“0”

最终结果如表2:
id           name       card_id         date
07050001   李三     a123               2007-5-11
07060010   李四     b234               2007-6-11
07060100   王五     c345               2007-6-12


然后,假如有一表3,如下:
name             id
李三  1
李四         2
王五         3

问题2:能不能联合表2和表3,用name来联合表2和表3,用表2的ID更新表3的ID,,更新后,表3的结果如下表:

name             id
李三  07050001
李四         07060010
王五         07060100


请问以上两个复杂的SQL语句能解决吗?请各位朋友赐教,谢谢!!!

------解决方案--------------------
1、


create table 表名 ([id] varchar(100), name varchar(100), card_id varchar(100), [date] datetime)

insert into 表名 (id,name,card_id,[date]) select 1, '李三 ', 'a123 ', '2007-5-11 '
insert into 表名 select 10, '李四 ', 'b234 ', '2007-6-11 '
insert into 表名 select 100, '王五 ', 'c345 ', '2007-6-12 '


--你需要的update语句
update 表名 set id = right(convert(varchar(6),[date],112),4) + right( '0000 ' + cast(id as varchar(100)),4)

select * from 表名

drop table 表名