这样批量修改数据库一列的数据???

时间:2021-11-12 07:17:26
这样批量修改数据库一列的数据???
例如:表musiclist中有pic一列
但pic里面的数据有的是1/13243sds.jpg,有的是2/12324sa.jpg
我想把这些不同的数据都修改成http://img.XXXX.com/13243sds.jpg,http://img.XXXX.com/12324sa.jpg这样。。
应该怎么搞????????
高手指点下。。
谢谢了。。

15 个解决方案

#1


update musiclist set pic='http://img.XXXX.com/13243sds.jpg,http://img.XXXX.com/12324sa.jpg'

#2


update musiclist
set pic = stuff(pic,1,charindex('/',pic),'http://img.XXXX.com')

#3


create table #tab(im varchar(50))

insert into #tab values('1/13243sds.jpg')

insert into #tab values('2/12324sa.jpg')

update #tab set im='http://img.XXXX.com/'+substring(im,charindex('/',im)+1,len(im)) from #tab

select * from #tab


im
--------------------------------------------------
http://img.XXXX.com/13243sds.jpg
http://img.XXXX.com/12324sa.jpg

(2 行受影响)

#4


declare @tb table (id int,name varchar(100))
insert into @tb select 1,'1/13243sds.jpg'
insert into @tb select 2,'2/12324sa.jpg'

update @tb set name='http://img.XXXX.com'+substring(name,1,len(name))
select * from @tb


id name
1 http://img.XXXX.com1/13243sds.jpg
2 http://img.XXXX.com2/12324sa.jpg

#5


declare @tb table (id int,name varchar(100))
insert into @tb select 1,'1/13243sds.jpg'
insert into @tb select 2,'2/12324sa.jpg'

update @tb set name='http://img.XXXX.com'+substring(name,2,len(name))
select * from @tb


id name
1 http://img.XXXX.com/13243sds.jpg
2 http://img.XXXX.com/12324sa.jpg

#6


declare @t table(pic varchar(50))

insert into @t values('1/13243sds.jpg')
insert into @t values('asdf2/12324sa.jpg')
insert into @t values('2/12324sa.jpg')
insert into @t values('afda 2/12324sa.jpg')

update @t
set pic = stuff(pic,1,charindex('/',pic)-1,'http://img.XXXX.com')

select * from @t
/*
pic                                                
-------------------------------------------------- 
http://img.XXXX.com/13243sds.jpg
http://img.XXXX.com/12324sa.jpg
http://img.XXXX.com/12324sa.jpg
http://img.XXXX.com/12324sa.jpg

(所影响的行数为 4 行)
*/

#7


补充下
表是:special
列是:Pic

#8


...........

#9


这样批量修改数据库一列的数据??? 
例如:表special中有pic一列 
但pic里面的数据有的是1/图片名,有的是2/图片名
pic列有几十W条数据。。
我想把这些不同的数据都修改成http://img.XXXX.com/图片名,http://img.XXXX.com/图片名这样。。 
应该怎么搞???????? 
高手指点下。。 
谢谢了。。

#10



create table special(Pic varchar(50))

insert into special values('1/13243sds.jpg')

insert into special values('2/12324sa.jpg')

update special set Pic='http://Picg.XXXX.com/'+substring(Pic,charindex('/',Pic)+1,len(Pic)) from special

select * from special

Pic
--------------------------------------------------
http://Picg.XXXX.com/13243sds.jpg
http://Picg.XXXX.com/12324sa.jpg

#11


10楼的兄弟。。
我试了下你的语句。。
没有删除掉1/、2/的。。。
还保留下来了。。

#12


都是 一位字符/  这样的,就用substring 或right就行

#13


update   special 
set   Pic='http://img.XXXX.com/'+   reverse(substring(reverse(Pic),1,charindex('/',reverse(Pic))-1)) 

楼主
绝对正确 
接分啦

#14


create   table   special(Pic   varchar(50))
insert   into   special   select   '/1/13243sds.jpg' 
insert   into   special   select   '/2/12324sa.jpg'
update  special set pic =  'http://img.XXXX.com'+right(pic,CHARINDEX('/',REVERSE(pic)))
select * from  special
drop table special
/*
Pic                                                
-------------------------------------------------- 
http://img.XXXX.com/13243sds.jpg
http://img.XXXX.com/12324sa.jpg

(所影响的行数为 2 行)
*/

#15


update  special set pic =  'http://img.XXXX.com'+right(pic,CHARINDEX('/',REVERSE(pic))-1)--楼上少了一个(-1)

#1


update musiclist set pic='http://img.XXXX.com/13243sds.jpg,http://img.XXXX.com/12324sa.jpg'

#2


update musiclist
set pic = stuff(pic,1,charindex('/',pic),'http://img.XXXX.com')

#3


create table #tab(im varchar(50))

insert into #tab values('1/13243sds.jpg')

insert into #tab values('2/12324sa.jpg')

update #tab set im='http://img.XXXX.com/'+substring(im,charindex('/',im)+1,len(im)) from #tab

select * from #tab


im
--------------------------------------------------
http://img.XXXX.com/13243sds.jpg
http://img.XXXX.com/12324sa.jpg

(2 行受影响)

#4


declare @tb table (id int,name varchar(100))
insert into @tb select 1,'1/13243sds.jpg'
insert into @tb select 2,'2/12324sa.jpg'

update @tb set name='http://img.XXXX.com'+substring(name,1,len(name))
select * from @tb


id name
1 http://img.XXXX.com1/13243sds.jpg
2 http://img.XXXX.com2/12324sa.jpg

#5


declare @tb table (id int,name varchar(100))
insert into @tb select 1,'1/13243sds.jpg'
insert into @tb select 2,'2/12324sa.jpg'

update @tb set name='http://img.XXXX.com'+substring(name,2,len(name))
select * from @tb


id name
1 http://img.XXXX.com/13243sds.jpg
2 http://img.XXXX.com/12324sa.jpg

#6


declare @t table(pic varchar(50))

insert into @t values('1/13243sds.jpg')
insert into @t values('asdf2/12324sa.jpg')
insert into @t values('2/12324sa.jpg')
insert into @t values('afda 2/12324sa.jpg')

update @t
set pic = stuff(pic,1,charindex('/',pic)-1,'http://img.XXXX.com')

select * from @t
/*
pic                                                
-------------------------------------------------- 
http://img.XXXX.com/13243sds.jpg
http://img.XXXX.com/12324sa.jpg
http://img.XXXX.com/12324sa.jpg
http://img.XXXX.com/12324sa.jpg

(所影响的行数为 4 行)
*/

#7


补充下
表是:special
列是:Pic

#8


...........

#9


这样批量修改数据库一列的数据??? 
例如:表special中有pic一列 
但pic里面的数据有的是1/图片名,有的是2/图片名
pic列有几十W条数据。。
我想把这些不同的数据都修改成http://img.XXXX.com/图片名,http://img.XXXX.com/图片名这样。。 
应该怎么搞???????? 
高手指点下。。 
谢谢了。。

#10



create table special(Pic varchar(50))

insert into special values('1/13243sds.jpg')

insert into special values('2/12324sa.jpg')

update special set Pic='http://Picg.XXXX.com/'+substring(Pic,charindex('/',Pic)+1,len(Pic)) from special

select * from special

Pic
--------------------------------------------------
http://Picg.XXXX.com/13243sds.jpg
http://Picg.XXXX.com/12324sa.jpg

#11


10楼的兄弟。。
我试了下你的语句。。
没有删除掉1/、2/的。。。
还保留下来了。。

#12


都是 一位字符/  这样的,就用substring 或right就行

#13


update   special 
set   Pic='http://img.XXXX.com/'+   reverse(substring(reverse(Pic),1,charindex('/',reverse(Pic))-1)) 

楼主
绝对正确 
接分啦

#14


create   table   special(Pic   varchar(50))
insert   into   special   select   '/1/13243sds.jpg' 
insert   into   special   select   '/2/12324sa.jpg'
update  special set pic =  'http://img.XXXX.com'+right(pic,CHARINDEX('/',REVERSE(pic)))
select * from  special
drop table special
/*
Pic                                                
-------------------------------------------------- 
http://img.XXXX.com/13243sds.jpg
http://img.XXXX.com/12324sa.jpg

(所影响的行数为 2 行)
*/

#15


update  special set pic =  'http://img.XXXX.com'+right(pic,CHARINDEX('/',REVERSE(pic))-1)--楼上少了一个(-1)