oracle批量处理一个字段相除
试验了两种方式都可以解决
建表语句
CREATE TABLE "A_TEST" (
"TEST_DATA" NUMBER,
"ID" VARCHAR2(25 BYTE)
)
解决方法1
UPDATE a_test t1
SET test_data = ( SELECT TEST_DATA / 10 FROM a_test t2 WHERE t1.id = t2.id )
WHERE
id IN ( SELECT id FROM a_test t2 WHERE t1.id = t2.id )
解决方法2(保留了两位小数)
UPDATE a_test t1
SET test_data = round( test_data / 10, 2 )
WHERE
id IN ( SELECT id FROM a_test t2 WHERE t1.id = t2.id )
除数为0怎么办
select decode(b,0,0,a/b*100) per from aa;
遇到空字段怎么办
UPDATE a_test t1
SET test_data = (case when test_data is null then null else test_data/10 end)
WHERE
id IN ( SELECT id FROM a_test t2 WHERE t1.id = t2.id )
处理结果大家自行测试