我有一张桌子。为了论证,我称之为表格。在表中,我有三列。 列(p键,名称,ID,位置)。
**PKey** **Name** **ID** **Location**
1 Penn State Main - 1551 1234 01
2 Penn State Branch - 1551 2345 02
3 Florida State - 1661 3456 03
4 Florida State Branch -1661 4567 04
我想将短划线( - )后的值替换为ID +' - '+所有行的位置
到目前为止,我有这个:
BEGIN
declare @name1 varchar(50),@name varchar(50),@ID char(4), @location char(2)
declare @IDLocation varchar(6),@loop int
set @loop=0
set @IDLocation=''
set @name1=''
DECLARE _cursor cursor for
select name,ID,location from Table
OPEN _cursor
FETCH _cursor
into @name, @ID, @location
while @@FETCH_STATUS = 0
Begin
set @IDLocation = @ID+'-'+@location
if @loop !=0
Begin
Select SUBSTRING(@name,1,CHARINDEX('-',@name)-1)
End
set @name1= @name+'-'+ @IDLocation
set @loop= @loop + 1
Fetch _cursor
into @name, @ID, @location
End
close _cursor
deallocate _cursor
END
概要。我真的很努力。我执行此操作并且没有任何改变它仍然是您在上面看到的相同值。通过添加子字符串,我可以删除( - )之后的所有内容,然后再添加字符串。
请帮助我。它会得到赞赏。
答案 0 :(得分:0)
我明白了...感谢任何试图提供帮助的人。 首先,我有一些错误。对于那些想要学习的人 由于我已经有一段时间@@ fetch,我真的不需要循环
BEGIN
declare @subname varchar(70),@name1 varchar(50),@name varchar(50),@ID char(4), @location char(2)
declare @pkey int,@IDLocation varchar(6)
set @IDLocation=''
set @name1=''
DECLARE _cursor cursor for
select pkey,name,ID,location from Table
OPEN _cursor
FETCH _cursor
into @pkey, @name, @ID, @location
while @@FETCH_STATUS = 0
Begin
set @IDLocation = @ID+'-'+@location
Select @subname= SUBSTRING(@name,1,CHARINDEX('-',@name)-1)
set @name1= @subname+'-'+ @IDLocation
Update Table set name=@name1
where pkey=@pkey
Fetch _cursor
into @pkey, @name, @ID, @location
End
close _cursor
deallocate _cursor
END