Обновить часть значения столбца в SQL Server - PullRequest
0 голосов
/ 25 декабря 2011

У меня есть база данных в SQL Server с ее данными. Мне нужно изменить часть значения некоторых столбцов в некоторых условиях.

Представьте значение как " 0010020001 ". 002 принадлежит другому значению в моей базе данных, и всякий раз, когда я хочу изменить его на 005 , я должен обновить предыдущий 10-значный код на " 001005001 ".

На самом деле мне нужно обновить только часть значения столбцов, используя оператор UPDATE. Как я могу это сделать (в этом примере)?

Ответы [ 2 ]

1 голос
/ 25 декабря 2011

В то время как все остальные правы, если у вас есть контроль над схемой, вам определенно не следует хранить ваши данные таким образом, именно так я бы решил проблему, как вы ее описали, если бы я не смог настроить схему.

IF OBJECT_ID('tempdb..#test') IS NOT NULL
DROP TABLE #test

create table #test
(
id int,
multivaluecolumn varchar(20)
)

insert #Test
select 1,'001002001'
UNION
select 2,'002004002'
UNION
select 3,'003006003'
GO

declare @oldmiddlevalue char(3) 
set @oldmiddlevalue= '002'
declare @newmiddlevalue char(3)
set @newmiddlevalue = '005'

select * from #Test

Update #Test set multivaluecolumn =left(multivaluecolumn,3) + @newmiddlevalue + right(multivaluecolumn,3)
where substring(multivaluecolumn,4,3) = @oldmiddlevalue


select * from #Test
0 голосов
/ 25 декабря 2011

Почему вы не используете CSV (значения, разделенные запятыми) или любой другой символ, например ~, для хранения этих значений.Как только вам нужно обновить часть, используйте функцию php explode, а затем обновите ее.После того, как ваша работа будет завершена, снова объедините все значения, чтобы получить желаемую строку для сохранения в вашем столбце.

В этом случае ваш столбец будет иметь значения VARCHAR, такие как 001 ~ 002 ~ 0001

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...