updated rows(sql update 字段+字符串)

本文目录
- sql update 字段+字符串
- 如何update减少redo生成
- Jquery easyui怎么得到datagrid里面的值和传到后台
- sql 批量修改数据
- C#中 EasyUI datagrid数据传给后台 求前台后台代码
- 如何快速获得SQL Server 表行数
- ora sql 为什么会出现 0 rows updated
sql update 字段+字符串
我用oracle测试了一下。发现结果显示:2 rows updated.
但是select * from orderinfo;
发现数据没有变化。
继续:update orderinfo set orderId =’000’+orderId where length(orderId)=4
显示:2 rows updated.
但是数据仍然没有变化...
寻找问题中...
补充:
问题解决了。
我用的是:
update orderinfo set orderid=concat(’000’,orderid) where length(orderid)=4;
再补充:
在mysql中测试了下,相同的语句行得通。
如何update减少redo生成
回答该问题其实非常的简单,花了20分钟做了如下简单的测试,供大家参考。
SQL》 CREATE TABLE killdb AS SELECT * FROM dba_objects;
TABLE created.
SQL》 SELECT COUNT(*) FROM killdb;
COUNT(*)
----------
50100
SQL》 SET autotrace traceonly statistics
SQL》 SET LINES 150
SQL》 UPDATE killdb
2 SET wner=’www.killdb.com’
3 WHERE object_id 》1000 AND object_id 《1200;
199 ROWS updated.
Statistics
----------------------------------------------------------
51 recursive calls
208 db block gets
798 consistent gets
0 physical reads
53908 redo SIZE
668 bytes sent via SQL*Net TO client
619 bytes received via SQL*Net FROM client
3 SQL*Net roundtrips TO/FROM client
1 sorts (memory)
0 sorts (disk)
199 ROWS processed
此时我们知道这个update语句会产生53908 byte的redo 日志。当然这个是sql未执行前就进行的计算,
如果要计算某个sql执行完毕以后所产生的redo size,我们还可以通过查询v$mystat试图获得结果,如下:
SQL》 SET autot off
SQL》 SELECT a.name, b.VALUE
2 FROM v$statname a, v$mystat b
3 WHERE a.statistic# = b.statistic#
4 AND a.name = ’redo size’;
NAME VALUE
--------------------- ----------
redo SIZE 5807132
SQL》 UPDATE killdb
2 SET wner=’www.killdb.com’
3 WHERE object_id 》1000 AND object_id 《1200;
199 ROWS updated.
SQL》 commit;
Commit complete.
SQL》 SELECT a.name, b.VALUE
2 FROM v$statname a, v$mystat b
3 WHERE a.statistic# = b.statistic#
4 AND a.name = ’redo size’;
NAME VALUE
--------------------- ----------
redo SIZE 5829644
SQL》 SELECT 5829644 - 5807132 FROM dual;
5829644-5807132
---------------
22512
我们可以明显的看到,通过查询v$mystat 得出的结果跟前面通过看sql执行计划统计信息
结果有较大的差别,区别在哪儿呢?
这是session级别的,因为还涉及到一些递归的操作,也会产生redo,所以上面单纯的查询
session的redo产生大小,并不准确,我们应该查询整个db instacne的,如下:
SQL》 CREATE TABLE killdb2 AS SELECT * FROM dba_objects;
TABLE created.
SQL》 ALTER system checkpoint;
System altered.
SQL》 ALTER system switch logfile;
System altered.
SQL》 SELECT name,VALUE FROM v$sysstat WHERE name = ’redo size’;
NAME VALUE
--------------------- ----------
redo SIZE 27301552
SQL》 UPDATE killdb2
2 SET wner=’www.killdb.com’
3 WHERE object_id 》1000 AND object_id 《1200;
199 ROWS updated.
SQL》 commit;
Commit complete.
SQL》 SELECT name,VALUE FROM v$sysstat WHERE name = ’redo size’;
NAME VALUE
--------------------- ----------
redo SIZE 27355556
SQL》 SELECT 27355556 - 27301552 FROM dual;
27355556-27301552
-----------------
54004
我们可以看到,此时的54004 跟最开始的50100算是比较接近了。
SQL》 SELECT xidusn,xidslot,xidsqn,ubablk,ubafil,ubarec FROM v$transaction;
no ROWS selected
SQL》 SELECT ubafil,ubablk,start_ubablk,used_ublk FROM v$transaction;
no ROWS selected
SQL》 DELETE FROM killdb WHERE rownum 《 1000;
999 ROWS deleted.
SQL》 SELECT xidusn,xidslot,xidsqn,ubablk,ubafil,ubarec FROM v$transaction;
XIDUSN XIDSLOT XIDSQN UBABLK UBAFIL UBAREC
---------- ---------- ---------- ---------- ---------- ----------
10 39 354 1256 2 26
SQL》 SELECT ubafil,ubablk,start_ubablk,used_ublk FROM v$transaction;
UBAFIL UBABLK START_UBABLK USED_UBLK
---------- ---------- ------------ ----------
2 1256 1229 28
SQL》 conn /AS sysdba
Connected.
SQL》 SELECT SUM(KTUXESIZ)
2 FROM x$ktuxe
3 WHERE KTUXEUSN=10 AND KTUXESLT=39 AND KTUXESQN=354;
SUM(KTUXESIZ)
-------------
28
SQL》 SELECT 28*8192 FROM dual;
28*8192
----------
229376
从上我们可以看到该delete语句所产生的undo 大小是229376 BYTE。
Jquery easyui怎么得到datagrid里面的值和传到后台
var insertRows = $(’#test’).datagrid(’getChanges’,’inserted’);
var updateRows = $(’#test’).datagrid(’getChanges’,’updated’);
var deleteRows = $(’#test’).datagrid(’getChanges’,’deleted’);
var changesRows = {
inserted : ,
updated : ,
deleted : ,
};
if (insertRows.length》0) {
for (var i=0;i《insertRows.length;i++) {
changesRows.inserted.push(insertRows);
}
}
if (updateRows.length》0) {
for (var k=0;k《updateRows.length;k++) {
changesRows.updated.push(updateRows);
}
}
if (deleteRows.length》0) {
for (var j=0;j《deleteRows.length;j++) {
changesRows.deleted.push(deleteRows);
}
}
$.ajax({
type: "post",
url: "../stock/stock_modify.asp",
data: "inserted="+JSON.stringify(changesRows.inserted)+"&updated="+JSON.stringify(changesRows.updated)+"&deleted="+JSON.stringify(changesRows.deleted),
datatype: "json",
success:function(data){
}
})
以上是针对插入删除更新 操作
sql 批量修改数据
使用update 更新修改数据库数据,更改的结果集是多条数据则为批量修改。
语法格式如:
update 表格 set 列 = 更改值 where 筛选条件
例:
update table set a=1 --将table 中所以a列的值改为 1
update table set a=1 where b=2 --将table 中列b=2的记录中a列的值改为 1
C#中 EasyUI datagrid数据传给后台 求前台后台代码
呵呵。。。
前台js:
///修改datagrid后保存修改到数据库
function save(obj, url) {
obj = $(obj);
//变化的行集合
var insertRows, updateRows, deleteRows;
var allRows = obj.datagrid(’getRows’);
var rowIndex;
var updateFlag = true;//判断新增、修改的行数据是否都合法,都合法为true,否则false
for (var i = 0; i 《 allRows.length; i++) {
if (!obj.datagrid(’validateRow’, i)) {
updateFlag = false;
$.messager.show({
title: ’Error messages’,
msg: ’第’ + (i + 1) + ’行数据有误’,
timeout: 0
});
}
obj.datagrid(’endEdit’, i);
}
//获取所有变化的行
insertRows = obj.datagrid(’getChanges’, ’inserted’);
updateRows = obj.datagrid(’getChanges’, ’updated’);
deleteRows = obj.datagrid(’getChanges’, ’deleted’);
//if、else判断是否有变化的行,if没有则跳出提示信息,else进行下一步
if ((insertRows.length == 0 && updateRows.length == 0 && deleteRows.length == 0) || !updateFlag) {
//$.messager.alert(’Messages’, ’请进行正确的添加、更改或删除操作后再保存!’, ’info’);
}
else {
//将所有变化行的信息转换成string,并传给后台
var strInsertRows = JSON.stringify(insertRows);
var strUpdateRows = JSON.stringify(updateRows);
var strDeleteRows = JSON.stringify(deleteRows);
$.post(url, {
’insertStr’: strInsertRows,
’updateStr’: strUpdateRows,
’deleteStr’: strDeleteRows
},
function (result) {
if (result == ’Success’) {
obj.datagrid(’acceptChanges’);
obj.datagrid(’reload’);
obj.datagrid(’unselectAll’);
$.messager.alert(’Messages’, result, ’info’, function () { self.parent.refreshTab() });
}
else {
$.messager.show({
title: ’提示信息’,
msg: result,
timeout: 0
});
}
}, ’text’);
}
}
后台ashx保存到数据库:
JSONHelper.JSONToObject《List《StrorageInfo》》(insertStr);将得到的新增json转换成实体,这边你只要能把json拆成你要的数据就好
如何快速获得SQL Server 表行数
其实有两个办法可以快速的查询到SQL Server的表数据。1. sp_spaceused:其中有一列是rows,如果输入的表对象的话,那么就会获得这个表的行数,速度非常快。其中也有一个列为rowcnt,Counts the total number of inserted, deleted, or updated rows since the last time statistics were updated for the table 使用下面的语句:---replace the tablename when you use this scriptfrom sys.sysindexes where id =object_id(’tablename’) and indid in(0,1) 通过这个统计结果可能不是太准确,因为系统统计信息有个时间差
ora sql 为什么会出现 0 rows updated
就是说,没有满足条件的数据需要update
一般upate语句中会带where,当没有数据满足where子句时,会出现0 rows updated的返回提示。

更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10




