sql 更新语句
解决时间 2021-08-10 18:04
- 提问者网友:风月客
- 2021-08-10 01:20
同表下:有四字段分别:资料,性别,姓名,年龄,地区
资料字段内容是格式是:男,张三,29岁,杭州
我用update 表 set 性别=left(资料,charindex(',',资料)-1) 但是后面要怎么解决?
求完整语句!
最佳答案
- 五星知识达人网友:孤老序
- 2021-08-10 01:47
--本人已测试过,没问题,望采纳谢谢
--创建存储过程test_SP
create proc test_SP
as
begin
--定义@Sex性别,@Name姓名,@Age年龄,@Area地区,@ziliao资料 变量
declare @Sex varchar(10),@Name varchar(10),@Age varchar(10),@Area varchar(10),@ziliao varchar(100)
--定义资料字段@idx1,2,3是用来保存逗号在字符串中的位置
declare @idx1 int ,@idx2 int ,@idx3 int
--定义游标C_test,访问数据集合,详细自己查资料去
Declare C_test Cursor
--ziliao(资料字段来自哪个表) (ziliaoinfo)
for Select ziliao from ziliaoinfo
--打开游标
open C_test
--执行第一次提取,得到的结果集的首行
fetch next from C_test into @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,@idx1+@idx2+1,len(@ziliao)) 因为@idx2+1 字符串变成了例如29岁,杭州, 然后用Substring 函数截取年龄
@idx3=charindex(',',substring(@ziliao,@idx1+@idx2+1,len(@ziliao))),@Age=substring(substring(@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))
--然后向数据表插入新数据, 朋友您说是更新,又没给出根据什么条件来所以我就用插入语句,你想更新的话你自己改下语句,添加下条件就可以了。
insert into tb_user (Sex,[Name],Age,Area) values (@Sex,@Name,@Age,@Area)
fetch next from C_test into @ziliao
end
close C_test --关闭游标
deallocate C_test --释放游标
end
全部回答
update 表 set 性别='男',姓名='张三',年龄='29岁',地区='杭州' where 性别 IN ( '男','女' ) 其中 where 性别 IN ( '男','女' ) 可以设为 某一个字段(实例中为性别) 在某几个值(实例中为‘男’,‘女’)之间
- 2楼网友:街头电车
- 2021-08-10 03:21
请问你需要更新的一共是多少个字段的资料呢?全部。还是只是性别而已
我要举报
大家都在看
推荐资讯