sql 批量修改数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 批量修改数据相关的知识,希望对你有一定的参考价值。

表A里有Pro01~Pro48 ItemId01~ItemId48 Pro01对应ItemId01 看插图

如果Itemid01~48数据里为1的 则将对应的Pro01~48改为2
这个批量应该怎样改?
我现在只能一个一个改 太慢了
UPDATE A SET Pro01 = 2 WHERE ItemId01 = 1

这个表设计的有问题。不过错已铸成,不可挽回。就你的需求而言,需要一句动态SQL,也就是说用循环动态生成SQL然后用exec执行。自己搜一下动态SQL就知道了。

或者用个小程序生成48个像UPDATE A SET Pro01 = 2 WHERE ItemId01 = 1 一样的语句,只是Pro和ItemId后面从01变到48,相信你会编。
参考技术A 把语句放Excel拼一下拖成48条语句咯 参考技术B 用存储过程,写个FOR循环 参考技术C 这是个视图把,在他的物理表里做修改

批量修改oracle数据库中的某一个字段?

我的表中有一类字段,由于内容太长了,我想做一些批处理,把记录中包含括号的内容给去掉,如何用sql实现

可以通过update方法进行批量修改。
sql:update table_name SET age=25;
备注:也可以添加必要的条件,针对固定条件的数据进行批量修改。
sql:update table_name SET age=age+1 where name ='zhangsan ';
参考技术A 写个过程处理。或者写个小程序来处理吧。如果存储过程熟练就用存储过程,如果程序熟练就程序吧

先要分析数据。看是否有规律。如果有规律用字符串截取然后再拼在一起。就解决了。如果是没有规律的那就麻烦点。楼上的回答只适合于有规律的数据
参考技术B --以下是我根据你的描述,做的测试,希望对你有帮助:

-- 新建一张表kongxianji:
CREATE TABLE kongxianji(a VARCHAR2(200));

-- 插入数据,然后提交:
INSERT INTO kongxianji (a) VALUES ('12345(6)789');
INSERT INTO kongxianji (a) VALUES ('12345(67)89');
INSERT INTO kongxianji (a) VALUES ('12345(678)9');
COMMIT;
SELECT * FROM kongxianji;

-- 把a中的括号去掉,然后提交,到这一步可以查看表中数据的变化情况:
UPDATE kongxianji SET a = replace(a,substr(a,instr(a,'('),(instr(a,')')-instr(a,'(')+1)),'');
COMMIT;

SELECT * FROM kongxianji;本回答被提问者和网友采纳
参考技术C oralce 9i 10g测试通过
SQL> select * from test2;

STR1
--------------------------------------------------------------------------------
abc(asdlfjl;;asx)qpweruas;dfs
xxxx(jl;;asx)qxxppruas;dfs

update test2 t1 set t1.str1=(select substr(str1,1,instr(str1,'(' )-1)||substr(str1,instr(str1,')')+1) str2 from test2 t2 where t1.rowid=t2.rowid)
/

SQL> select * from test2;

STR1
--------------------------------------------------------------------------------
abcqpweruas;dfs
xxxxqxxppruas;dfs

以上是关于sql 批量修改数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP 批量修改多条记录的Sql语句写法

es 批量查询,修改,删除,增加操作

如何在SQL数据库批量修改一列数据

SQL如何将一列数据批量修改 将该列数据本身加一

sql 数据库数据 批量判断修改

批量mysql修改表前缀