这么简单的问题都没人会吗??高手真的都走了吗??

feathersea 2003-09-16 10:41:41
京移计[2000]17号 中的[2000]是固定的,但是17位置上的数据是不固定的,,我想把17位置上的数字赋值给recordnumber1,也就是把[2000]和号(这个字)之间的这个数字给转到
recordnumber1,用SQL怎么写??数据有十万多条一个个粘贴的话我会死去!
...全文
17 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
szyuzh 2003-09-16
  • 打赏
  • 举报
回复
答案很精彩,有学到东西了!
pengdali 2003-09-16
  • 打赏
  • 举报
回复
update 表 set recordnumber1=substring(你的列,charindex(']',你的列)+1,charindex('号',你的列)-charindex(']',你的列)-1)
dafu71 2003-09-16
  • 打赏
  • 举报
回复
update yourtable set recordnumber1=cast(substring('京移计[2000]17号',charindex(']','京移计[2000]17号')+1,len('京移计[2000]17号')-1-charindex(']','京移计[2000]17号')) as int)


-------->

update yourtable set recordnumber1=cast(substring(yourcolumn,charindex(']',yourcolumn)+1,len(yourcolumn)-1-charindex(']',yourcolumn)) as int)

yujohny 2003-09-16
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2264/2264046.xml?temp=.6639673
我回答了,而且比较通用,不过你号前面是几位数字,都可以找出来

--先建立函数
create function getint(@str nvarchar(100),@substr nvarchar(100))
returns int
AS
begin
declare @x int,@sstr nvarchar(1),@str1 nvarchar(50)
SET @x=charindex(@substr,@str)+len(@substr)
SET @str1=''
while @x<len(@str)
begin
select @sstr=substring(@str,@x,1)
if @sstr in ('0','1','2','3','4','5','6','7','8','9')
set @str1 =@str1+@sstr
else break
set @x=@x+1
end
if @str1='' set @str1='0'
return cast(@str1 as int)
end

然后用更新语句
update 表
set r2='1999',
r3=dbo.getint(r1,'(1999)'),--我的括号是全角的括号,也就是中文括号
t1='信息',
t2='2000',
t3=dbo.getint(r1,'(2000)')
愉快的登山者 2003-09-16
  • 打赏
  • 举报
回复
declare @s varchar(100)
set @s = '京移计[2000]17号'
select substring(@s, charindex(']',@s) + 1 , charindex('号',@s) - charindex(']',@s) - 1)

update table1 set recordnumber1 = substring(@s, charindex(']',@s) + 1 , charindex('号',@s) - charindex(']',@s) - 1)
where ???

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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