最好的方法是批量修改,即每次修改5000条(一次修改不要超过一万条,否则影响性能).
尽管在11g中我们可以使用merge命令,但最好先进行部分修改和影响评估,因为在生产环境中这样的操作具有较大风险。
若误操作发生,最好请DBA恢复。虽会受责备,但总比错上加错,失去挽回机会更糟。
如果对这些修改真的有信心,而只是从性能考虑,那可以用下面的方法(pk_col 是表的主键):
merge into xxx aa
using (select pk_col from xxx) bb
on (aa.pk_col=bb.pk_col)
when matched then
update set aa.datatype=66 where aa.datatype is null;
先去空白再替换。如果那个空白是空格就好办,用函数rtrim,ltrim去空格,如果不是空格
你把sql里的数据粘贴到记事本里,然后再sql的查询分析器里输入
select ascii(' 那个空白字符')得到这个空白的ascii码,接着
update表名 set 字段名=replace(字段名,char(刚才得到ascii码),'')
把空白都去掉之后用你那个语句就可以了。
还有一种本办法,就是把所有的空白的可能都写一次,比如 回车是char(13),换行是char(10)等等你就update表名 set 字段名=replace(字段名,char(10),'') ,
把所有可能都替换了,就那几种是空白,情况也不是很多
update yourTable set RECTIME = dateadd(yy,2,RECTIME)
解释:select dateadd(yy,3,getdate())
DATEADD ( datepart , number, date )
参数
datepart
是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。
日期部分 缩写
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
以上是SQL中,如何批量更新表中特定数据字段的某一部分的详细内容。更多信息请关注PHP中文网其他相关文章!