oracle数据库中要修改number(10)字段的前两位的的数字.SQL语句咋写?不能改变字段

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-04
ORACLE修改字段中第二位数字 SQL语句如何写?

假设你的qq字段是number型数据,我在表中添加了一个id字段用来作为查询条件项。方法如下:
CREATE TABLE TEST(
qq NUMBER(6),
ID NUMBER(6)
);

INSERT INTO TEST VALUES(123456,000000);
INSERT INTO TEST VALUES(123456,000001);
INSERT INTO TEST VALUES(123456,000002);

COMMIT;

DECLARE
v_qq VARCHAR2(6);
BEGIN
SELECT replace(to_char(qq),'2','3') INTO v_qq FROM TEST WHERE ID = 0;
UPDATE TEST SET qq = to_number(v_qq) WHERE ID = 0;
END;

SELECT * FROM TEST;

如果你的表结构里qq字段不是number而是char或者varchar2,那就不需要select中的to_char()和update中的to_number()了。希望对你有帮助,不过个人认为你这样改没什么意义,直接改整个字段的值就行了,效率更高。

number(10,2)表示的意思就是这个字段可以存一个10位的数字,其中两位是小数部分,也就是说整数部分有8位,最多可以表示99999999.99。其中小数位数只能小于等于2位,整数位数只能小于等于8位。至于你说的页面输入12345678这样的8位数字时,就报错,应该是你的程序处理中有修改原始的输入数据,导致入库的时候的这个数值超出了前面所说的限制。

update 表名 set 字段名=to_number('12'||substr(to_char(字段名),3)) where length(字段名)>1;

长度是2和大于2的都会修改。

update 表 set 列 = to_number('11'|| substr(列, 3)) where length(列) > 2;

select to_number('12'||substr(to_char(字段名),3)) from dual;

  • Oracle建表时如何设一个字段为日期类型
    答:1、打开oracle数据库新建一张表,因为是设置日期格式,因此字段2个date_time和time_time都是日期类型,如图:2、如果是简单的查询表,那是显示的如期还是日期格式,如图:4、在“查询编辑器”中,输入如图所示的代码:5、输入成功后,就完成了修改日期类型的字段值的操作。
  • oracle 中如何将查询到的i.suc_amount按x分别进行小计,最后总计,应该...
    答:i.trade_time,i.cust_name,i.order_id,sum(i.suc_amount) over(partition by o.org_desc || '_' || i.b_company),i.plug_id,i.b_company,sum(i.suc_amount) over()from t_ec_trade_info i, t_ec_org_mapping o where i.b_company = o.org_biz_numb and (i.b_company is...
  • 如何设置DISPLAY变量,正确运行Oracle程序的问题
    答:root登录一个窗口,运行一下语句。export DISPLAY=:0.0 xhost + su - oracle 然后就在这个窗口运行oracle的安装程序。不过你要在安装linux的时候装了图形界面,而且现在安装也是在图形界面才行。DISPLAY用来设置将图形显示到何处,直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量...
  • 如何查看以及清除Oracle ASM磁盘头部信息
    答:[oracle@oradb bin]$清理ASM磁盘头部信息:image虽然大部分内容都可以从ASM实例的数据字典中获得,但是在我们碰到ASM磁盘故障的时候,kfed提供的信息往往更容易让我们判断问题点。如果一个ASM Disk由于故障,导致删也删不掉,加也加不进去,一般情况是磁盘的header status状态不正确,此时就需要clear这个磁盘,然后再将它重新加...
  • oracle中创建一个function输入一个两位数字,输入一个字符串,如(in '0...
    答:总结一下,其实你这个函数是不需要出参的,使用返回值就能返回你要的值。或者写成存储过程,例如:create or replace procedure 过程名称(入参a in number, 出参b out varchar2) is begin -- 这里是不能写'01'的,'01'是字符串,如果想要是数字的话就不会有0了,只能是1 if 入参a = 1 ...
  • action获得值了但是显示无法将null插入oracle数据库,使用的是ssh框架...
    答:1 private UserInfo uInfo; //不是list...不用放在里,直接${uInfo.numbId}就可以了 2 private List<UserInfo> uInfoList;//如果要显示这个list {numbld} 下面这样也行 {numbld}
  • Oracle的数据字典
    答:1.1 X$表这一部分表是Oracle数据库的运行基础,在数据库启动时由Oracle应用程序动态创建。这部分表对数据库来说至关重要,所以Oracle不允许SYSDBA之外的用户直接访问,显示授权不被允许。如果显示授权你会收到如下错误: SQL grant select on x$ksppi to eygle;grant select on x$ksppi to eygle*...
  • 如何在oracle 10g r2中实现透明数据加密
    答:/opt/oracle/admin/test97/wallet/ 目录是用来存放生成的钱夹的。可以为加密钱夹选择任何目录,但路径不应指向在数据库安装过程中创建的标准模糊钱夹(cwallet.sso)。2. 接下来,您需要打开钱夹并创建万能加密密钥。从终端窗口中,输入以下命令:connect / as sysdbaalter system set key identified by "...
  • mysql怎么把固定的几个字符串,转成列的形式作为临时表查询
    答:db2数据库 有个values函数可用于你说的这种操作,但是mysql本身是 没有这样的函数的。下面是取巧的一种写法,也能得到你想要的数据。如图:select trim(substring_index(substring_index(a.num,',',b.help_topic_id + 1),',' ,- 1)) AS numbfrom (select '39982665399,39023431098,39764974...
  • Oracle数据库用的是ASM存储,加了几个盘之后, 有一个ASM diskgroup突然起...
    答:看alert.log里有报错信息:ORA-15040:diskgroupisincompleteORA-15066:offliningdi... Oracle数据库用的是ASM存储,加了几个盘之后, 有一个ASM diskgroup突然起不来了,不知道是怎么回事。 看alert.log 里有报错信息:ORA-15040: diskgroup is incompleteORA-15066: offlining disk "" may result in a data lossORA...