当前位置: 代码迷 >> Sql Server >> 求一存储过程或sql语句,该如何处理
  详细解决方案

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

热度:76   发布时间:2016-04-27 16:33:21.0
求一存储过程或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 行)

*/
  相关解决方案