news表中有三列,其中数据内容都一样
sort1, sort2, sort3
,1,2,3 ,1,2,3 ,1,2,3现在想全部更新为,
也就是sort1的内容是第1个逗号和第2个逗号间的内容
就是sort2的内容是第2个逗号和第3个逗号间的内容
就是sort3的内容是第3个逗号后的内容
sort1, sort2, sort3
1 2 3请教更新语句
sort1, sort2, sort3
,1,2,3 ,1,2,3 ,1,2,3现在想全部更新为,
也就是sort1的内容是第1个逗号和第2个逗号间的内容
就是sort2的内容是第2个逗号和第3个逗号间的内容
就是sort3的内容是第3个逗号后的内容
sort1, sort2, sort3
1 2 3请教更新语句
set sort1=substring(sort1,2,2),
sort2=substring(sort2,4,4),
sort3=substring(sort3,6,6);
类似
sort1, sort2, sort3
,1,2,3 ,1,2,3 ,1,2,3
用charindex找第2个逗号的位置比较麻烦
update news
set sort1=substring(sort1,2,2),
sort2=substring(sort2,4,4),
sort3=substring(sort3,6,6);
declare @tb table(sort1 varchar(10), sort2 varchar(10), sort3 varchar(10))
insert @tb
select ',1,2,3', ' ,1,2,3', ' ,1,2,3 'select parsename(sort1,3) as sort1,parsename(sort2,2) as sort2,parsename(sort3,1) as sort3
from
(
select replace(stuff(sort1,1,1,''),',','.') as sort1,
replace(stuff(sort2,1,1,''),',','.') as sort2,
replace(stuff(sort3,1,1,''),',','.') as sort3
from @tb
) a
/*
sort1 sort2 sort3
-------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------
1
*/
declare @aa varchar(200)select @aa='1,2,3,'
create table #cc([Sid] [int] IDENTITY (1, 1),des varchar(20))
declare @len int
select @len=CHARINDEX(',',@aa,1)while(@len>0)
begin
insert into #cc (des) values(substring(@aa,1,@len-1))
select @aa=substring(@aa,@len+1,len(@aa))
select @len=CHARINDEX(',',@aa,1)
end
update tb set sort1=des where sid=1
update tb set sort2=des where sid=2
update tb set sort3=des where sid=3
insert @tb
select ',1,2,3', ' ,1,2,3', ' ,1,2,3 '
update @tb set sort1=replace(substring(sort1,1,charindex(',',sort1,2)),',',''),
sort2=replace(substring(sort2,charindex(',',sort2,2)+1, charindex(',',sort2,charindex(',',sort2,2)+1)-charindex(',',sort2,2)),',',''),
sort3=replace( right(sort3,len(sort3)- charindex(',',sort3,charindex(',',sort3,2)+1)),',','')
select * from @tb
/*
sort1 sort2 sort3
--------------- ---------- ----------
1 1 3 */
类似
sort1, sort2, sort3
,1,2,3 ,1,2,3 ,1,2,3 现在想全部更新为,
也就是sort1的内容是第1个逗号和第2个逗号间的内容
就是sort2的内容是第2个逗号和第3个逗号间的内容
就是sort3的内容是第3个逗号后的内容
sort1, sort2, sort3
1 2 3 请教更新语句
insert into tb select ',1,2,3',',1,2,3',',1,2,3'
go
--你要的update语句:
update tb set sort1=substring(sort1,2,len(sort1)-charindex(',',sort1,2)-2),
sort2=substring(sort2,charindex(',',sort2,2)+1,len(sort2)-charindex(',',sort2,charindex(',',sort2,2)+1)),
sort3=right(sort3,len(sort3)-charindex(',',sort3,charindex(',',sort2,2)+1))
go
select * from tb
go
drop table tb
/*
sort1 sort2 sort3
---------- ---------- ----------
1 2 3
*/
SQL Server 企业管理器
---------------------------
[Microsoft][ODBC SQL Server Driver][SQL Server]向 substring 函数传递了无效的 length 参数。
---------------------------
确定 帮助
---------------------------