首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-02-01 
求一存储过程或sql语句tab1:tab2:col1col2col1col2col31ab-stu-ba1stu12ab-stu-ba2tea23ab-tea-ba3par34ab

求一存储过程或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 行)

*/

热点排行