0

我有一张桌子。为了论证起见,我称它为 Table。在表中,我有三列。列(Pkey、名称、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+'-'+Location 替换破折号(-)之后的值

到目前为止我有这个:

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

概括。我确实付出了努力。我执行了这个并且没有任何改变它保持与您在上面看到的相同的值。通过添加子字符串,我虽然可以删除 (-) 之后的所有内容,然后再向其中添加字符串。

请帮助我。将不胜感激。

4

1 回答 1

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
于 2013-06-13T16:10:29.277 回答