日期:2014-05-17  浏览次数:20564 次

批量提取更新别名
各位大侠:
   小弟现遇到一问题,请帮助解决。
有一个表大概有50000条数据:
表一:name                                 nameID  
      中国人(4444444)
      传感器(广州)有限公司(4487778)       

我想把后一个()里的数字取出来,然后批量更新到nameID中,请问如果实现?
sql 行业数据

------解决方案--------------------
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (name nvarchar(40))
insert into [TB]
select '中国人(4444444)' union all
select '传感器(广州)有限公司(4487778)'

select * from [TB]


SELECT name,REVERSE(SUBSTRING(REVERSE(name),2,PATINDEX('%(%',REVERSE(NAME))-2)) AS nameID  
FROM dbo.TB

/*
name nameID
中国人(4444444) 4444444
传感器(广州)有限公司(4487778) 4487778*/

--更新
--UPDATE dbo.TB
--SET nameid = REVERSE(SUBSTRING(REVERSE(name),2,PATINDEX('%(%',REVERSE(NAME))-2))

------解决方案--------------------
SUBSTRING(name,PATINDEX('%[0-9]%',name),7)