2013-06-13 4 views
0

У меня есть таблица. Для аргументации я назвал его Table. В таблице у меня три столбца. Столбцы (Pkey, имя, идентификатор, местоположение).SQL: Заменить часть строки в столбце для каждой строки

**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+'-'[email protected] 
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

Я понял это ... спасибо всем, кто пытался помочь. Сначала у меня было что-то не так. Для тех, кто хочет учиться Поскольку у меня уже есть время @@, мне не нужна петля

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+'-'[email protected] 


    Select @subname= SUBSTRING(@name,1,CHARINDEX('-',@name)-1) 

    set @name1= @subname+'-'+ @IDLocation 

    Update Table set [email protected] 
    where [email protected] 


    Fetch _cursor 
    into @pkey, @name, @ID, @location 
End 
close _cursor 
deallocate _cursor 
END 
Смежные вопросы