为了账号安全,请及时绑定邮箱和手机立即绑定

更新表中特定的字段

更新表中特定的字段

白衣染霜花 2018-12-07 05:31:47
例:我有一张合同表Contract Id Name Total buget 1 合同名称 100 102,22 2 合同名称2 300 ,102,22, 现在我想更新表中buget字段,更新条件为:如果表buget中值前后没有","要加上",",也就是说将第一行的buget值更新为",102,22,"的样子,没有where条件的。 目的是更新旧数据库中所有老数据,所以有个判断,就是前面没有","的值要加上",".此条件如何用sql语句来编写出来?谢谢大侠们! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 同时小弟还想请问社区强人怎么设计数据库比较合理,一张表中多少个字段为易? 个人在编程中始终在想如何编写能提高运行效率,在此更渴望能结交师傅朋友们!个人联系方式:QQ:648155643 万圣感激!
查看完整描述

7 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

update [Contract] set Buget=',' Buget where left(Buget,1)<>',';  

update [Contract] set Buget=Buget ',' where right(Buget,1)<>',';

 

表中字段不一定,曾经有个大表,80 多个字段

字段最好不好超过40个,另外这个也看字段的类型,如果都是int 或者 bit 类型的字段,多一些问题也不大

个人意见

查看完整回答
反对 回复 2019-01-07
?
HUWWW

TA贡献1874条经验 获得超12个赞

IF NOT OBJECT_ID('[Contract]') IS NULL
DROP TABLE [Contract]
GO

Create table [Contract]
(ID
int primary key identity(1,1)
,
[Name] nvarchar(50) null
,Total
float null
,buget
Nvarchar(500) null
)
go

insert into [Contract]
select '合同名称', 100,'102,22'
union all
select '合同名称2', 300,',102,22,'
union all
select '合同名称3', 300,'101,23,'

--------update [Contract] set buget=',' buget where left(buget,1)=','
--
------update [Contract] set buget=buget ',' where right(buget,1)=','

update [Contract]
set buget=(case when (left(buget,1)!=',' and right(buget,1)!=',') then ',' buget ','
when left(buget,1)!=',' then ',' buget
when right(buget,1)!=',' then buget ','
else buget
end)

/*
(3 row(s) affected)
*/
select * from [Contract]
查看完整回答
反对 回复 2019-01-07
?
侃侃无极

TA贡献2051条经验 获得超10个赞

谢谢各位大侠们,此问题我已解决了,谢谢你们!分数我来给大家平分吧。谢谢你们!
查看完整回答
反对 回复 2019-01-07
?
绝地无双

TA贡献1946条经验 获得超4个赞

create table aa
(
 buget varchar(50)
)

update aa set buget=',' buget ',' where  left(buget,1)<>',' or right(buget,1)<>','

select * from aa

查看完整回答
反对 回复 2019-01-07
?
繁花如伊

TA贡献2012条经验 获得超12个赞

update aa set buget=',' buget ',' where left(buget,1)<>',' or right(buget,1)<>','
忘记了 号
查看完整回答
反对 回复 2019-01-07
?
HUX布斯

TA贡献1876条经验 获得超6个赞

不知道为什么加号打不上去
查看完整回答
反对 回复 2019-01-07
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

谢谢各位大侠们,此问题我已解决了,谢谢你们!分数我来给大家平分吧。谢谢你们!
查看完整回答
反对 回复 2019-01-07
  • 7 回答
  • 0 关注
  • 585 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信