征求SQL语句

nuaawyd 2008-03-04 10:45:26
数据库表AAA(a1,a2,a3)
a1 a2 a3
51000 1 2
51030 1 2
52000 1 2
52933 1 1
67020 1 2

现在要做如下处理,判断a字段的前两位,如果是51,则将51替换成101,如果是52则将替换成102,如果是67则将替换成103
生成BBB表(b1,b2,b3),结果如下
b1 b2 b3
101000 1 2
101030 1 2
102000 1 2
102933 1 1
103020 1 2


征求SQL语句
...全文
97 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhsxsh 2008-03-04
  • 打赏
  • 举报
回复
select case when left(a1,2)='51' then '101'+ right(a1,len(a1)-2)
when left(a1,2)='52' then '102'+ right(a1,len(a1)-2)
when left(a1,2)='67' then '103'+ right(a1,len(a1)-2) end b1,
a2 as B2,a3 as B3 into BBB
from AAA

dawugui 2008-03-04
  • 打赏
  • 举报
回复
嘿嘿,那就赶快结帖,顺便给他们三两分.
nuaawyd 2008-03-04
  • 打赏
  • 举报
回复
只有dawugui老兄的是对的,其他人的我也没研究是什么地方不对,其他大侠再检查一下问题
-狙击手- 2008-03-04
  • 打赏
  • 举报
回复
create table a(a1 varchar(20),a2 int,a3 int)
insert into a select '51000',1,2
insert into a select '51030',1,2
insert into a select '52000',1,2
insert into a select '52933',1,1
insert into a select '67020',1,2

select
case left(a1,2)
when '51' then '101'+ right(a1,len(a1)-1)
when '52' then '102' + right(a1,len(a1)-1)
when '67' then '103' + right(a1,len(a1)-1)
else a1
end as a1 ,a2,a3
from a

drop table a

/*
a1 a2 a3
----------------------- ----------- -----------
1011000 1 2
1011030 1 2
1022000 1 2
1022933 1 1
1037020 1 2

(所影响的行数为 5 行)

*/
dawugui 2008-03-04
  • 打赏
  • 举报
回复
create table a(a1 varchar(10) , a2 int , a3 int)
insert into a values('51000',1,2)
insert into a values('51030',1,2)
insert into a values('52000',1,2)
insert into a values('52933',1,1)
insert into a values('67020',1,2)
go

update a
set a1 = case left(a1,2) when '51' then '101' when '52' then '102' when '67' then '103' end + substring(a1,3,len(a1))

select * from A

drop table A

/*
a1 a2 a3
-------------------- ----------- -----------
101000 1 2
101030 1 2
102000 1 2
102933 1 1
103020 1 2
(所影响的行数为 5 行)
*/
wzy_love_sly 2008-03-04
  • 打赏
  • 举报
回复
create table a(a1 varchar(20),a2 int,a3 int)
insert into a select '51000',1,2
insert into a select '51030',1,2
insert into a select '52000',1,2
insert into a select '52933',1,1
insert into a select '67020',1,2

select
case
when left(a1,2)='51' then '101'+ right(a1,len(a1)-1)
when left(a1,2)='52' then '102' + right(a1,len(a1)-1)
when left(a1,2)='67' then '103' + right(a1,len(a1)-1)
else a1
end as a1 ,a2,a3
into bb
from a

select * from bb


a1 a2 a3
1011000 1 2
1011030 1 2
1022000 1 2
1022933 1 1
1037020 1 2
pt1314917 2008-03-04
  • 打赏
  • 举报
回复

select
a1=case
when left(a1,2)='51' then '101'+ right(a1,len(a1)-2)
when left(a1,2)='52' then '102' + right(a1,len(a1)-2)
when left(a1,2)='67' then '103' + right(a1,len(a1)-2) end,a2,a3
from aaa

$扫地僧$ 2008-03-04
  • 打赏
  • 举报
回复

select case when left(a1,2)='51' then '101'+ right(a1,len(a1)-2)
when left(a1,2)='52' then '102'+ right(a1,len(a1)-2)
when left(a1,2)='67' then '103'+ right(a1,len(a1)-2) end b1,
a2 as B2,a3 as B3 into BBB
from AAA
wzy_love_sly 2008-03-04
  • 打赏
  • 举报
回复
ok结帖吧,要不又没分了
wzy_love_sly 2008-03-04
  • 打赏
  • 举报
回复
create table a(a1 varchar(20),a2 int,a3 int)
insert into a select '51000',1,2
insert into a select '51030',1,2
insert into a select '52000',1,2
insert into a select '52933',1,1
insert into a select '67020',1,2

select
case
when left(a1,2)='51' then '101'+ right(a1,len(a1)-1)
when left(a1,2)='52' then '102' + right(a1,len(a1)-1)
when left(a1,2)='67' then '103' + right(a1,len(a1)-1)
else a1
end as a1 ,a2,a3
from a


a1 a2 a3
1011000 1 2
1011030 1 2
1022000 1 2
1022933 1 1
1037020 1 2

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧