问题补充说明:同表下:有四字段分别:资料,性别,姓名,年龄,地区资料字段内容是格式是:男,张三,29岁,杭州我用update 表 set 性别=left(资料,charindex(',',资料)-1) 但是后面要怎么解决?求完整语句!
--本人已测试过,没问题,望采纳谢谢
--创建存储过程test_SP
createproctest_SP
as
begin
--定义@Sex副性别,@Name姓名,@Age年龄,@Area地区,@ziliao资料 变量
declare@Sexvarchar(10),@Namevarchar(10),@Agevarchar(10),@Areavarchar(10),@ziliaovarch致困均在差角互师换消次ar(100)
--样心技坐视始定义资料字段@idx1,2,3是用来保存逗号在字符串中的位置
dec360问答lare@idx他兴溶到王黄右代觉1int,@idx2int,@idx3int
--定义游标C_test,访问数据集合,详细自己查资料去
DeclareC_testCursor
--ziliao(资料字段来自哪个表)(ziliaoinfo)
forSelectziliaofromziliaoinfo
--打开游标
openC_test
--执行第一次提取,得到的结果集的首行
fetchnextfromC_testinto@ziliao
--检测@@fetch_Status,若仍有行,则继续循环
--只要上次提取获得成功,就会执行下面损利侵错决修先金粒的提取
while@@fetch_Status=0
begin
--景跑演本人也是新手,不知道怎么在T—SQL中氢知若班将握歌方把字符分组,所以用笨拙的方法,不过朋友您也想到了。
--获旧跟吧除得第一个逗号在整个ziliao(资料)字段中设格矿出现的位置, 然后用Substring函数截取性别
Select@idx1=charindex(',',@ziliao) ,@Sex=substring(@ziliao,0,@idx1),
--获得第二个逗号在截刘特被掌坚冲取substring(@ziliao,@idx1+1,len(@ziliao))因为@idx1+1字符串变成了例如张三,周纪高按结29岁,杭州,然后树仅客看文岩湖商似找用Substring函数截取姓名
@idx2=charindex(',',substring(@ziliao,@idx1+1,len(@ziliao))) ,@Name=(substring(substring(@ziliao,@idx1+1,len(@ziliao)),0,@idx2)),
--获得第三个逗号在截取substring(@ziliao,@id长半x1+@idx2+1,len(@ziliao))因为@idx2+1字符串变成了例如知异29岁,杭州,然后用Substring函数截取年龄
@idx3=charindex(',',su剧假至照bstring(@ziliao,@idx1+@idx2+1,len(@zilia希型依煤o))),@Age=substring(subst景医木季ring(@ziliao,@idx1+@idx2+1,len(@ziliao)),0,@idx3),
--如果还有逗企形号就声明变量然后substring(@ziliao,@idx1+@idx2+@idx3+……+1,len(@ziliao))
--获得最后个逗号在截取直接用前面三个出现的位置加起来然后用Substring函数截取地区
@Area=substring(@ziliao,@idx1+@idx2+@idx3+1,len(@ziliao))
--然后向数据表插入新数据, 朋友您说是更新,又没给出根据什么条件来所以我就用插入语句,你想更新的话你自己改下语句,添加下条件就可以了。
insertintotb_user(Sex,[Name],Age,Area)values(@Sex,@Name,@Age,@Area)
fetchnextfromC_testinto@ziliao
end
closeC_test--关闭游标
deallocateC_test--释放游标
end
标签:sql,语句,更新