读书人

求一存储过程或sql语句,该如何处理

发布时间: 2012-02-01 16:58:19 作者: rapoo

求一存储过程或sql语句
tab1: tab2:
col1 col2 col1 col2 col3
1 ab-stu-ba 1 stu 1
2 ab-stu-ba 2 tea 2
3 ab-tea-ba 3 par 3
4 ab-par-ba

想通过一存储过程将tab1变为:
col1 col2
1 ab-1-ba
2 ab-1-ba
3 ab-2-ba
4 ab-3-ba

请各位给解决以下

[解决办法]
if object_id( 'pubs..tab1 ') is not null
drop table tab1
go

create table tab1(col1 varchar(10),col2 varchar(10))
insert into tab1(col1,col2) values( '1 ', 'ab-stu-ba ')
insert into tab1(col1,col2) values( '2 ', 'ab-stu-ba ')
insert into tab1(col1,col2) values( '3 ', 'ab-tea-ba ')
insert into tab1(col1,col2) values( '4 ', 'ab-par-ba ')
go

if object_id( 'pubs..tab2 ') is not null
drop table tab2
go
create table tab2(col1 varchar(10),col2 varchar(10),col3 varchar(10))
insert into tab2(col1,col2,col3) values( '1 ', 'stu ', '1 ')
insert into tab2(col1,col2,col3) values( '2 ', 'tea ', '2 ')
insert into tab2(col1,col2,col3) values( '3 ', 'par ', '3 ')
go

update tab1
set col2 = left(tab1.col2,charindex( '- ',tab1.col2)) + tab2.col3 + reverse(left(reverse(tab1.col2),charindex( '- ',reverse(tab1.col2))))
from tab1,tab2
where substring(tab1.col2 , charindex( '- ',tab1.col2) + 1 , charindex( '- ',tab1.col2,charindex( '- ',tab1.col2)+1) - charindex( '- ',tab1.col2) - 1) = tab2.col2

select * from tab1

drop table tab1,tab2

/*
col1 col2
---------- ----------
1 ab-1-ba
2 ab-1-ba
3 ab-2-ba
4 ab-3-ba

(所影响的行数为 4 行)

*/

读书人网 >SQL Server

热点推荐